]> git.saurik.com Git - wxWidgets.git/commitdiff
Really set svn:eol-style property.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 17 Jul 2010 14:55:45 +0000 (14:55 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 17 Jul 2010 14:55:45 +0000 (14:55 +0000)
The last commit used incorrect property name, remove the erroneous property
and set the correct svn:eol-style one.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

BuildSVN.txt
docs/doxygen/wxwidgets.js
docs/tech/tn0024.txt
misc/scripts/ctags.ignore
samples/wrapsizer/wrapsizer.bkl
src/os2/snglinst.cpp
tests/controls/label.cpp

index 639487e5589dc037bcbf9be71aff0e57952ad916..06d5fd8b736223ba264c114e834c485521d34858 100644 (file)
-------------------------------------------------------------------------\r
-                How to build the sources from SVN\r
-------------------------------------------------------------------------\r
-\r
-Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac\r
-etc. alongside these instructions.\r
-\r
-I) Windows using plain makefiles\r
-----------------------------------------\r
-\r
-a) If using Microsoft Visual C++ 5.0 or 6.0\r
-\r
-Ensure that the command-line compiler and tools (including\r
-nmake) are installed and ready to run.  Depending on your\r
-installation there may be a batch file (commonly named VCVARS32.BAT)\r
-that needs to be run to set correct environment variables and PATH entries.\r
-\r
-Continue with item c) below.\r
-\r
-\r
-b) If using the MinGW or Cygwin compilers\r
-\r
-You can get MinGW from  http://www.mingw.org/\r
-\r
-Cygwin is available at  http://www.cygwin.com/\r
-\r
-If you are using Cygwin or MinGW together with the MSYS environment, you\r
-can build the library using configure (see "Unix ports" and\r
-"Windows using configure" below). You can also\r
-build wxWidgets without configure using native makefile, but only with\r
-MinGW. Using Cygwin together with Windows makefile is no longer supported.\r
-\r
-If building with MinGW without configure:\r
-\r
--> Set your path so that it includes the directory\r
-   where your compiler and tools reside\r
-\r
--> Make sure you have GNU Make installed. It must be Windows native version.\r
-   Download it from http://www.mingw.org, the executable will be called\r
-   mingw32-make.exe.\r
-\r
--> Modern version of MinGW is required; preferably MinGW 2.0 (with gcc3),\r
-   but MinGW with gcc-2.95.3 will suffice. If you are using 2.95, you will\r
-   have to change variable GCC_VERSION in config.gcc (see msw/install.txt\r
-   for details).\r
-\r
-If using configure, Unix instructions apply.\r
-\r
-\r
-c) Build instructions\r
-\r
-Assuming that you installed the wxWidgets sources into c:\wxWidgets:\r
-\r
--> Copy c:\wxWidgets\include\wx\msw\setup0.h\r
-   to   c:\wxWidgets\include\wx\msw\setup.h\r
--> Edit c:\wxWidgets\include\wx\msw\setup.h to choose\r
-   the features you would like to compile wxWidgets with[out].\r
-\r
-   and std iostreams are disabled with\r
-   #define wxUSE_STD_IOSTREAM   0\r
-\r
--> type: cd c:\wxWidgets\build\msw\r
--> type: make -f makefile.gcc  (if using GNU tools)\r
-or type: nmake -f makefile.vc   (if using MS VC++)\r
-etc.\r
-\r
-   See also docs/msw/install.txt for additional compilation options.\r
-\r
-d) Borland (including free command line tools)\r
-   Download tools from http://www.borland.com/downloads/\r
-\r
-   See docs/msw/install.txt for details; in brief:\r
-\r
--> type cd c:\wxWidgets\build\msw\r
--> type make -f makefile.bcc\r
-\r
-You can customize many things in the build process, detailed description is\r
-in docs/msw/install.txt.\r
-\r
-\r
-II) Unix ports\r
---------------\r
-\r
-Building wxGTK or wxMotif completely without configure\r
-won't ever work, but there is now a new makefile system\r
-that works without libtool and automake, using only\r
-configure to create what is needed.\r
-\r
-In order to create configure, you need to have the\r
-GNU autoconf package (version > 2.54) installed\r
-on your system and type run "autoconf" in the base\r
-directory (or run the autogen.sh script in the same\r
-directory, which just calls autoconf). Note that you usually don't\r
-need to do this because configure is included in SVN.\r
-\r
-Set WXWIN environment variable to the base directory such\r
-as ~/wxWidgets (this is actually not really needed).\r
-\r
--> type: export WXWIN=~/wxWidgets\r
--> type: md mybuild\r
--> type: cd mybuild\r
--> type: ../configure --with-motif\r
-or type: ../configure --with-gtk\r
--> type: make\r
--> type: su <type root password>\r
--> type: make install\r
--> type: ldconfig\r
--> type: exit\r
-\r
-Call configure with --disable-shared to create a static\r
-library. Calling "make uninstall" will remove the installed\r
-library and "make dist" will create a distribution (not\r
-yet complete).\r
-\r
-III) Windows using configure\r
-----------------------------------------\r
-\r
-wxWidgets can be built on Windows using MSYS (see\r
-http://www.mingw.org/), which is a POSIX build environment\r
-for Windows. With MSYS you can just ./configure && make (see also VII,\r
-Unix->Windows cross-compiling using configure).\r
-\r
-Of course, you can also build the library using plain makefiles (see\r
-section I).\r
-\r
-V) MacOS X using configure and the Developer Tools\r
-----------------------------------------\r
-\r
-You need to have the Developer Tools installed. If this is not the case,\r
-you will need to register at the Apple Developer web site (this is a free\r
-registration) in order to download the Developer Tools installer.\r
-\r
-In order to create configure, you need to have the\r
-GNU autoconf package (version >= 2.54) installed\r
-on your system and type run "autoconf" in the base\r
-directory (or run the autogen.sh script in the same\r
-directory, which just calls autoconf).\r
-\r
--> type: mkdir macbuild\r
--> type: cd macbuild\r
--> type: ../configure --with-mac\r
-or type: ../configure\r
--> type: make\r
-\r
-VI) OS/2\r
-----------------------------------------\r
-No notes.\r
-\r
-VII) Unix->Windows cross-compiling using configure\r
---------------------------------------------------\r
-\r
-First you'll need a cross-compiler; linux glibc binaries of MinGW and\r
-Cygwin (both based on egcs) can be found at\r
-ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries,\r
-based on the latest MinGW release can be found at\r
-http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html\r
-Otherwise you can compile one yourself.\r
-\r
-[ A Note about Cygwin and MinGW: the main difference is that Cygwin\r
-binaries are always linked against cygwin.dll. This dll encapsulates most\r
-standard Unix C extensions, which is very handy if you're porting unix\r
-software to windows. However, wxMSW doesn't need this, so MinGW is\r
-preferable if you write portable C(++). ]\r
-\r
-You might want to build both Unix and Windows binaries in the same source\r
-tree; to do this make subdirs for each e.g. unix and win32. If you've\r
-already build wxWidgets in the main dir, do a 'make distclean' there,\r
-otherwise configure will get confused. (In any case, read the section 'Unix\r
-using configure' and make sure you're able to build a native wxWidgets\r
-library; cross-compiling errors can be pretty obscure and you'll want to be\r
-sure that your configure setup is basically sound.)\r
-\r
-To cross compile the windows library, do\r
--> cd win32\r
-(or whatever you called it)\r
-Now run configure. There are two ways to do this\r
--> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw\r
-where --build= should read whatever platform you're building on. Configure\r
-will notice that build and host platforms differ, and automatically prepend\r
-i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).\r
-The other way to run configure is by specifying the names of the binaries\r
-yourself:\r
--> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \\r
-   DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \\r
-   ../configure --host=i586-mingw32 --with-mingw\r
-\r
-(all assuming you're using MinGW)\r
-By default this will compile a DLL, if you want a static library,\r
-specify --disable-shared.\r
-\r
-Type\r
--> make\r
-and wait, wait, wait. Don't leave the room, because the minute you do there\r
-will be a compile error :-)\r
-\r
-NB: if you are using a very old compiler you risk to get quite a few warnings\r
-    about "ANSI C++ forbids implicit conversion from 'void *'" in all places\r
-    where va_arg macro is used. This is due to a bug in (some versions of)\r
-    MinGW headers which may be corrected by upgrading your compier,\r
-    otherwise you might edit the file\r
-\r
-    ${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h\r
-\r
-    (instead of egcs-2.91.57 you may have something different), searching for\r
-    the lines\r
-\r
-/* Define __gnuc_va_list.  */\r
-\r
-#ifndef __GNUC_VA_LIST\r
-#define __GNUC_VA_LIST\r
-#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)\r
-typedef char *__gnuc_va_list;\r
-#else\r
-typedef void *__gnuc_va_list;\r
-#endif\r
-#endif\r
-\r
-    and adding "|| defined(_WIN32)" to the list of platforms on which\r
-    __gnuc_va_list is char *.\r
-\r
-If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib\r
-(or just libwx_msw.a if you opted for a static build).\r
-Now try building the minimal sample:\r
-\r
--> cd samples/minimal\r
--> make\r
-\r
-and run it with wine, for example (or copy to a Windows box)\r
--> wine minimal.exe\r
-\r
-If all is well, do an install; from win32\r
--> make install\r
-\r
-Native and cross-compiled installations can co-exist peacefully\r
-(as long as their widget sets differ), except for wx-config. You might\r
-want to rename the cross-compiled one to i586-mingw32-wx-config, or something.\r
-\r
-Cross-compiling TODO:\r
----------------------\r
-- resource compiling must be done manually for now (should/can we link the\r
-default wx resources into libwx_msw.a?) [ No we can't; the linker won't\r
-link it in... you have to supply an object file ]\r
-- static executables are HUGE -- there must be room for improvement.\r
-\r
+------------------------------------------------------------------------
+                How to build the sources from SVN
+------------------------------------------------------------------------
+
+Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac
+etc. alongside these instructions.
+
+I) Windows using plain makefiles
+----------------------------------------
+
+a) If using Microsoft Visual C++ 5.0 or 6.0
+
+Ensure that the command-line compiler and tools (including
+nmake) are installed and ready to run.  Depending on your
+installation there may be a batch file (commonly named VCVARS32.BAT)
+that needs to be run to set correct environment variables and PATH entries.
+
+Continue with item c) below.
+
+
+b) If using the MinGW or Cygwin compilers
+
+You can get MinGW from  http://www.mingw.org/
+
+Cygwin is available at  http://www.cygwin.com/
+
+If you are using Cygwin or MinGW together with the MSYS environment, you
+can build the library using configure (see "Unix ports" and
+"Windows using configure" below). You can also
+build wxWidgets without configure using native makefile, but only with
+MinGW. Using Cygwin together with Windows makefile is no longer supported.
+
+If building with MinGW without configure:
+
+-> Set your path so that it includes the directory
+   where your compiler and tools reside
+
+-> Make sure you have GNU Make installed. It must be Windows native version.
+   Download it from http://www.mingw.org, the executable will be called
+   mingw32-make.exe.
+
+-> Modern version of MinGW is required; preferably MinGW 2.0 (with gcc3),
+   but MinGW with gcc-2.95.3 will suffice. If you are using 2.95, you will
+   have to change variable GCC_VERSION in config.gcc (see msw/install.txt
+   for details).
+
+If using configure, Unix instructions apply.
+
+
+c) Build instructions
+
+Assuming that you installed the wxWidgets sources into c:\wxWidgets:
+
+-> Copy c:\wxWidgets\include\wx\msw\setup0.h
+   to   c:\wxWidgets\include\wx\msw\setup.h
+-> Edit c:\wxWidgets\include\wx\msw\setup.h to choose
+   the features you would like to compile wxWidgets with[out].
+
+   and std iostreams are disabled with
+   #define wxUSE_STD_IOSTREAM   0
+
+-> type: cd c:\wxWidgets\build\msw
+-> type: make -f makefile.gcc  (if using GNU tools)
+or type: nmake -f makefile.vc   (if using MS VC++)
+etc.
+
+   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/
+
+   See docs/msw/install.txt for details; in brief:
+
+-> type cd c:\wxWidgets\build\msw
+-> type make -f makefile.bcc
+
+You can customize many things in the build process, detailed description is
+in docs/msw/install.txt.
+
+
+II) Unix ports
+--------------
+
+Building wxGTK or wxMotif completely without configure
+won't ever work, but there is now a new makefile system
+that works without libtool and automake, using only
+configure to create what is needed.
+
+In order to create configure, you need to have the
+GNU autoconf package (version > 2.54) installed
+on your system and type run "autoconf" in the base
+directory (or run the autogen.sh script in the same
+directory, which just calls autoconf). Note that you usually don't
+need to do this because configure is included in SVN.
+
+Set WXWIN environment variable to the base directory such
+as ~/wxWidgets (this is actually not really needed).
+
+-> type: export WXWIN=~/wxWidgets
+-> type: md mybuild
+-> type: cd mybuild
+-> type: ../configure --with-motif
+or type: ../configure --with-gtk
+-> type: make
+-> type: su <type root password>
+-> type: make install
+-> type: ldconfig
+-> type: exit
+
+Call configure with --disable-shared to create a static
+library. Calling "make uninstall" will remove the installed
+library and "make dist" will create a distribution (not
+yet complete).
+
+III) Windows using configure
+----------------------------------------
+
+wxWidgets 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).
+
+V) MacOS X using configure and the Developer Tools
+----------------------------------------
+
+You need to have the Developer Tools installed. If this is not the case,
+you will need to register at the Apple Developer web site (this is a free
+registration) in order to download the Developer Tools installer.
+
+In order to create configure, you need to have the
+GNU autoconf package (version >= 2.54) installed
+on your system and type run "autoconf" in the base
+directory (or run the autogen.sh script in the same
+directory, which just calls autoconf).
+
+-> type: mkdir macbuild
+-> type: cd macbuild
+-> type: ../configure --with-mac
+or type: ../configure
+-> type: make
+
+VI) OS/2
+----------------------------------------
+No notes.
+
+VII) Unix->Windows cross-compiling using configure
+--------------------------------------------------
+
+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
+Otherwise you can compile one yourself.
+
+[ 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 MinGW is
+preferable if you write portable C(++). ]
+
+You might want to build both Unix and Windows binaries in the same source
+tree; to do this make subdirs for each e.g. unix and win32. If you've
+already build wxWidgets in the main dir, do a 'make distclean' there,
+otherwise configure will get confused. (In any case, read the section 'Unix
+using configure' and make sure you're able to build a native wxWidgets
+library; cross-compiling errors can be pretty obscure and you'll want to be
+sure that your configure setup is basically sound.)
+
+To cross compile the windows library, do
+-> cd win32
+(or whatever you called it)
+Now run configure. There are two ways to do this
+-> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw
+where --build= should read whatever platform you're building on. Configure
+will notice that build and host platforms differ, and automatically prepend
+i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
+The other way to run configure is by specifying the names of the binaries
+yourself:
+-> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
+   DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
+   ../configure --host=i586-mingw32 --with-mingw
+
+(all assuming you're using MinGW)
+By default this will compile a DLL, if you want a static library,
+specify --disable-shared.
+
+Type
+-> make
+and wait, wait, wait. Don't leave the room, because the minute you do there
+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)
+    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
+
+    (instead of egcs-2.91.57 you may have something different), searching for
+    the lines
+
+/* Define __gnuc_va_list.  */
+
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)
+typedef char *__gnuc_va_list;
+#else
+typedef void *__gnuc_va_list;
+#endif
+#endif
+
+    and adding "|| defined(_WIN32)" to the list of platforms on which
+    __gnuc_va_list is char *.
+
+If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib
+(or just libwx_msw.a if you opted for a static build).
+Now try building the minimal sample:
+
+-> cd samples/minimal
+-> make
+
+and run it with wine, for example (or copy to a Windows box)
+-> wine minimal.exe
+
+If all is well, do an install; from win32
+-> make install
+
+Native and cross-compiled installations can co-exist peacefully
+(as long as their widget sets differ), except for wx-config. You might
+want to rename the cross-compiled one to i586-mingw32-wx-config, or something.
+
+Cross-compiling TODO:
+---------------------
+- resource compiling must be done manually for now (should/can we link the
+default wx resources into libwx_msw.a?) [ No we can't; the linker won't
+link it in... you have to supply an object file ]
+- static executables are HUGE -- there must be room for improvement.
+
index 7bb9de9ab6fac5710426cc60060186186c8b3f70..980f91959d77331493bee0ddd898cf558a69823b 100644 (file)
@@ -1,5 +1,5 @@
-/*****************************************************************************\r
- ** Name:        wxwidgets.js\r
+/*****************************************************************************
+ ** Name:        wxwidgets.js
  ** Purpose:     The wxWidgets documentation javascript
  ** Author:      Doxygen team
  ** RCS-ID:      $Id$
  ** Purpose:     The wxWidgets documentation javascript
  ** Author:      Doxygen team
  ** RCS-ID:      $Id$
@@ -7,79 +7,79 @@
  *****************************************************************************/
 
 // from w3schools
  *****************************************************************************/
 
 // from w3schools
-function getCookie(c_name)\r
-{\r
-  if (document.cookie.length>0)\r
-  {\r
-    c_start=document.cookie.indexOf(c_name + "=");\r
-    if (c_start!=-1)\r
-    {\r
-      c_start=c_start + c_name.length+1;\r
-      c_end=document.cookie.indexOf(";",c_start);\r
-      if (c_end==-1) c_end=document.cookie.length;\r
-      return unescape(document.cookie.substring(c_start,c_end));\r
-    }\r
-  }\r
-  return "";\r
-}\r
-// from w3schools\r
-function setCookie(c_name,value,expiredays)\r
-{\r
-  var exdate=new Date();\r
-  exdate.setDate(exdate.getDate()+expiredays);\r
-  document.cookie=c_name+ '=' +escape(value)+\r
-  ((expiredays==null) ? '' : ';expires='+exdate.toGMTString());\r
-}\r
-\r
-// Reimplementation of changeDisplayState\r
-function mychangeDisplayState( e )\r
-{\r
-  var num=this.id.replace(/[^[0-9]/g,'');\r
-  var button=this.firstChild;\r
-  var sectionDiv=document.getElementById('dynsection'+num);\r
-  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){\r
-    sectionDiv.style.display='block';\r
-    button.src='open.gif';\r
-  }else{\r
-    sectionDiv.style.display='none';\r
-    button.src='closed.gif';\r
-  }\r
-\r
-  setCookie( 'sectionDiv.style.display', sectionDiv.style.display );\r
-\r
-}\r
-\r
-window.onload = function myinitDynSections()\r
-{\r
-  var divs=document.getElementsByTagName('div');\r
-  var sectionCounter=1;\r
-  for(var i=0;i<divs.length-1;i++){\r
-    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){\r
-      var header=divs[i];\r
-      var section=divs[i+1];\r
-      var button=header.firstChild;\r
-      if (button!='IMG'){\r
-        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);\r
-        button=document.createElement('img');\r
-        divs[i].insertBefore(button,divs[i].firstChild);\r
-      }\r
-      header.style.cursor='pointer';\r
-      header.onclick=mychangeDisplayState;\r
-      header.id='dynheader'+sectionCounter;\r
-      section.id='dynsection'+sectionCounter;\r
-\r
-      var display = getCookie( 'sectionDiv.style.display' );\r
-      if ( display == '' || display == 'block' ){\r
-        section.style.display='block'; // default\r
-        button.src='open.gif';\r
-      }else{\r
-        section.style.display='none';\r
-        button.src='closed.gif';\r
-      }\r
-      setCookie( 'sectionDiv.style.display', section.style.display );\r
-\r
-      section.style.marginLeft='14px';\r
-      sectionCounter++;\r
-    }\r
-  }\r
-}\r
+function getCookie(c_name)
+{
+  if (document.cookie.length>0)
+  {
+    c_start=document.cookie.indexOf(c_name + "=");
+    if (c_start!=-1)
+    {
+      c_start=c_start + c_name.length+1;
+      c_end=document.cookie.indexOf(";",c_start);
+      if (c_end==-1) c_end=document.cookie.length;
+      return unescape(document.cookie.substring(c_start,c_end));
+    }
+  }
+  return "";
+}
+// from w3schools
+function setCookie(c_name,value,expiredays)
+{
+  var exdate=new Date();
+  exdate.setDate(exdate.getDate()+expiredays);
+  document.cookie=c_name+ '=' +escape(value)+
+  ((expiredays==null) ? '' : ';expires='+exdate.toGMTString());
+}
+
+// Reimplementation of changeDisplayState
+function mychangeDisplayState( e )
+{
+  var num=this.id.replace(/[^[0-9]/g,'');
+  var button=this.firstChild;
+  var sectionDiv=document.getElementById('dynsection'+num);
+  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
+    sectionDiv.style.display='block';
+    button.src='open.gif';
+  }else{
+    sectionDiv.style.display='none';
+    button.src='closed.gif';
+  }
+
+  setCookie( 'sectionDiv.style.display', sectionDiv.style.display );
+
+}
+
+window.onload = function myinitDynSections()
+{
+  var divs=document.getElementsByTagName('div');
+  var sectionCounter=1;
+  for(var i=0;i<divs.length-1;i++){
+    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
+      var header=divs[i];
+      var section=divs[i+1];
+      var button=header.firstChild;
+      if (button!='IMG'){
+        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
+        button=document.createElement('img');
+        divs[i].insertBefore(button,divs[i].firstChild);
+      }
+      header.style.cursor='pointer';
+      header.onclick=mychangeDisplayState;
+      header.id='dynheader'+sectionCounter;
+      section.id='dynsection'+sectionCounter;
+
+      var display = getCookie( 'sectionDiv.style.display' );
+      if ( display == '' || display == 'block' ){
+        section.style.display='block'; // default
+        button.src='open.gif';
+      }else{
+        section.style.display='none';
+        button.src='closed.gif';
+      }
+      setCookie( 'sectionDiv.style.display', section.style.display );
+
+      section.style.marginLeft='14px';
+      sectionCounter++;
+    }
+  }
+}
index d835fe4defe5b092af81c762b53b8a3c8eccdd33..5e8afc6416b439ce969b1c927015fb16f6f60144 100644 (file)
@@ -1,55 +1,55 @@
-                         How to add a new XRC handler\r
-                         ============================\r
-\r
-0. Purpose\r
-----------\r
-\r
-This note describes what needs to be done to add a new XRC handler, i.e. add\r
-support for loading the objects of some class wxFoo from XRC.\r
-\r
-\r
-1. Implement the handler\r
-------------------------\r
-\r
-By convention, the XRC handler for a class wxFoo declared in wx/foo.h is called\r
-wxFooXmlHandler and is declared in the file wx/xrc/xh_foo.h (this last rule\r
-wasn't always respected in the past, however it's not a reason to not respect\r
-it in the future). The steps for adding a new handler are:\r
-\r
-a) Add handler declaration in include/wx/xrc/xh_foo.h, it will usually be the\r
-   same as in the other files so you can get inspiration for your brand new\r
-   handler from e.g. wx/xrc/xh_srchctrl.h. Notice the use of wxUSE_FOO if wxFoo\r
-   is guarded by this symbol.\r
-\r
-b) Add implementation in src/xrc/xh_foo.cpp: again, it will be almost always\r
-   very similar to the existing controls. You will need to add support for\r
-   the control-specific styles.\r
-\r
-\r
-2. Update the other files\r
--------------------------\r
-\r
-There are a few other files to update to make wxWidgets aware of the new\r
-handler:\r
-\r
-a) Add the new files created above to build/bakefiles/files.bkl: search for\r
-   "xh_srchctrl" to see where you need to add them\r
-\r
-b) Add #include "wx/xrc/xh_foo.h" to wx/xrc/xh_all.h.\r
-\r
-c) Register the new handler in wxXmlResource::InitAllHandlers() in\r
-   src/xrc/xmlrsall.cpp\r
-\r
-\r
-3. Update the sample\r
---------------------\r
-\r
-Demonstrate that the new handler works by adding a control using it to\r
-samples/xrc/rc/controls.xrc.\r
-\r
-\r
-=== EOF ===\r
-\r
-Author:  VZ\r
-Version: $Id: tn0021.txt 47865 2007-08-03 20:00:32Z VZ $\r
-\r
+                         How to add a new XRC handler
+                         ============================
+
+0. Purpose
+----------
+
+This note describes what needs to be done to add a new XRC handler, i.e. add
+support for loading the objects of some class wxFoo from XRC.
+
+
+1. Implement the handler
+------------------------
+
+By convention, the XRC handler for a class wxFoo declared in wx/foo.h is called
+wxFooXmlHandler and is declared in the file wx/xrc/xh_foo.h (this last rule
+wasn't always respected in the past, however it's not a reason to not respect
+it in the future). The steps for adding a new handler are:
+
+a) Add handler declaration in include/wx/xrc/xh_foo.h, it will usually be the
+   same as in the other files so you can get inspiration for your brand new
+   handler from e.g. wx/xrc/xh_srchctrl.h. Notice the use of wxUSE_FOO if wxFoo
+   is guarded by this symbol.
+
+b) Add implementation in src/xrc/xh_foo.cpp: again, it will be almost always
+   very similar to the existing controls. You will need to add support for
+   the control-specific styles.
+
+
+2. Update the other files
+-------------------------
+
+There are a few other files to update to make wxWidgets aware of the new
+handler:
+
+a) Add the new files created above to build/bakefiles/files.bkl: search for
+   "xh_srchctrl" to see where you need to add them
+
+b) Add #include "wx/xrc/xh_foo.h" to wx/xrc/xh_all.h.
+
+c) Register the new handler in wxXmlResource::InitAllHandlers() in
+   src/xrc/xmlrsall.cpp
+
+
+3. Update the sample
+--------------------
+
+Demonstrate that the new handler works by adding a control using it to
+samples/xrc/rc/controls.xrc.
+
+
+=== EOF ===
+
+Author:  VZ
+Version: $Id: tn0021.txt 47865 2007-08-03 20:00:32Z VZ $
+
index da20204026944338bc01308c511e3e22565914b5..60372c20a2e8aa842ab80adeecf25308f9a92d4f 100644 (file)
@@ -1,41 +1,41 @@
 WXUNUSED+
 WXUNUSED+
-WXDLLEXPORT\r
-WXDLLIMPEXP_ADV\r
-WXDLLIMPEXP_DATA_ADV+\r
-WXDLLIMPEXP_FWD_ADV\r
-WXDLLIMPEXP_AUI\r
-WXDLLIMPEXP_DATA_AUI+\r
-WXDLLIMPEXP_FWD_AUI\r
-WXDLLIMPEXP_BASE\r
-WXDLLIMPEXP_DATA_BASE+\r
-WXDLLIMPEXP_FWD_BASE\r
-WXDLLIMPEXP_CORE\r
-WXDLLIMPEXP_DATA_CORE+\r
-WXDLLIMPEXP_FWD_CORE\r
-WXDLLIMPEXP_NET\r
-WXDLLIMPEXP_MEDIA\r
-WXDLLIMPEXP_DATA_MEDIA+\r
-WXDLLIMPEXP_FWD_MEDIA\r
-WXDLLIMPEXP_DATA_NET+\r
-WXDLLIMPEXP_FWD_NET\r
-WXDLLIMPEXP_HTML\r
-WXDLLIMPEXP_DATA_HTML+\r
-WXDLLIMPEXP_FWD_HTML\r
-WXDLLIMPEXP_GL\r
-WXDLLIMPEXP_DATA_GL+\r
-WXDLLIMPEXP_FWD_GL\r
-WXDLLIMPEXP_QA\r
-WXDLLIMPEXP_DATA_QA+\r
-WXDLLIMPEXP_FWD_QA\r
-WXDLLIMPEXP_XML\r
-WXDLLIMPEXP_DATA_XML+\r
-WXDLLIMPEXP_FWD_XML\r
-WXDLLIMPEXP_XRC\r
-WXDLLIMPEXP_DATA_XRC+\r
-WXDLLIMPEXP_FWD_XRC\r
-WXDLLIMPEXP_PROPGRID\r
-WXDLLIMPEXP_DATA_PROPGRID+\r
-WXDLLIMPEXP_FWD_PROPGRID\r
-WXDLLIMPEXP_RICHTEXT\r
-WXDLLIMPEXP_DATA_RICHTEXT+\r
-WXDLLIMPEXP_FWD_RICHTEXT\r
+WXDLLEXPORT
+WXDLLIMPEXP_ADV
+WXDLLIMPEXP_DATA_ADV+
+WXDLLIMPEXP_FWD_ADV
+WXDLLIMPEXP_AUI
+WXDLLIMPEXP_DATA_AUI+
+WXDLLIMPEXP_FWD_AUI
+WXDLLIMPEXP_BASE
+WXDLLIMPEXP_DATA_BASE+
+WXDLLIMPEXP_FWD_BASE
+WXDLLIMPEXP_CORE
+WXDLLIMPEXP_DATA_CORE+
+WXDLLIMPEXP_FWD_CORE
+WXDLLIMPEXP_NET
+WXDLLIMPEXP_MEDIA
+WXDLLIMPEXP_DATA_MEDIA+
+WXDLLIMPEXP_FWD_MEDIA
+WXDLLIMPEXP_DATA_NET+
+WXDLLIMPEXP_FWD_NET
+WXDLLIMPEXP_HTML
+WXDLLIMPEXP_DATA_HTML+
+WXDLLIMPEXP_FWD_HTML
+WXDLLIMPEXP_GL
+WXDLLIMPEXP_DATA_GL+
+WXDLLIMPEXP_FWD_GL
+WXDLLIMPEXP_QA
+WXDLLIMPEXP_DATA_QA+
+WXDLLIMPEXP_FWD_QA
+WXDLLIMPEXP_XML
+WXDLLIMPEXP_DATA_XML+
+WXDLLIMPEXP_FWD_XML
+WXDLLIMPEXP_XRC
+WXDLLIMPEXP_DATA_XRC+
+WXDLLIMPEXP_FWD_XRC
+WXDLLIMPEXP_PROPGRID
+WXDLLIMPEXP_DATA_PROPGRID+
+WXDLLIMPEXP_FWD_PROPGRID
+WXDLLIMPEXP_RICHTEXT
+WXDLLIMPEXP_DATA_RICHTEXT+
+WXDLLIMPEXP_FWD_RICHTEXT
index 2684f3626dd85e4af0deb206abad6610fac1870a..d4c6bea5cf4bdfc25ebe90186a2650d4194538db 100644 (file)
@@ -1,12 +1,12 @@
-<?xml version="1.0" ?>\r
-<makefile>\r
-\r
-    <include file="../../build/bakefiles/common_samples.bkl"/>\r
-\r
-    <exe id="wrapsizer" template="wx_sample" template_append="wx_append">\r
-        <sources>wrapsizer.cpp</sources>\r
-        <wx-lib>core</wx-lib>\r
-        <wx-lib>base</wx-lib>\r
-    </exe>\r
-\r
-</makefile>\r
+<?xml version="1.0" ?>
+<makefile>
+
+    <include file="../../build/bakefiles/common_samples.bkl"/>
+
+    <exe id="wrapsizer" template="wx_sample" template_append="wx_append">
+        <sources>wrapsizer.cpp</sources>
+        <wx-lib>core</wx-lib>
+        <wx-lib>base</wx-lib>
+    </exe>
+
+</makefile>
index 20df07a4b2b0735422d86c80711a4bb6be9a9cc8..fd03b774fdec0c3627ecda61180ebca86c5bb911 100644 (file)
@@ -1,9 +1,9 @@
-///////////////////////////////////////////////////////////////////////////////\r
-// Name:        os2/snglinst.cpp\r
-// Purpose:     implements wxSingleInstanceChecker class for OS/2 using\r
-//              named mutexes\r
-// Author:      Vadim Zeitlin\r
-// Modified by: Lauri Nurmi (modified for OS/2)\r
+///////////////////////////////////////////////////////////////////////////////
+// Name:        os2/snglinst.cpp
+// Purpose:     implements wxSingleInstanceChecker class for OS/2 using
+//              named mutexes
+// Author:      Vadim Zeitlin
+// Modified by: Lauri Nurmi (modified for OS/2)
 // Created:     08.02.2009
 // RCS-ID:      $Id$
 // Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Created:     08.02.2009
 // RCS-ID:      $Id$
 // Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
-    #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_SNGLINST_CHECKER\r
-\r
-#ifndef WX_PRECOMP\r
-    #include "wx/string.h"\r
-    #include "wx/log.h"\r
-#endif //WX_PRECOMP\r
-\r
-#include "wx/snglinst.h"\r
-\r
-#define INCL_DOSSEMAPHORES\r
-#define INCL_DOSERRORS\r
-#include <os2.h>\r
-\r
-#include "wx/os2/private.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// wxSingleInstanceCheckerImpl: the real implementation class\r
-// ----------------------------------------------------------------------------\r
-\r
-class WXDLLEXPORT wxSingleInstanceCheckerImpl\r
-{\r
-public:\r
-    wxSingleInstanceCheckerImpl()\r
-    {\r
-        m_hMutex = NULL;\r
-        m_anotherRunning = false;\r
-    }\r
-\r
-    bool Create(const wxString& name)\r
-    {\r
-        wxString semName;\r
-        semName.Printf(wxT("\\SEM32\\%s"), name.c_str());\r
-        int rc = DosCreateMutexSem(semName.c_str(), &m_hMutex, DC_SEM_SHARED, 1);\r
-\r
-        if ( rc == NO_ERROR ) {\r
-            m_anotherRunning = false;\r
-            return true;\r
-        } else if ( rc == ERROR_DUPLICATE_NAME ) {\r
-            m_anotherRunning = true;\r
-            return true;\r
-        } else {\r
-            m_anotherRunning = false;  // we don't know for sure in this case\r
-            wxLogLastError(wxT("DosCreateMutexSem"));\r
-            return false;\r
-        }\r
-    }\r
-\r
-    bool IsAnotherRunning() const\r
-    {\r
-        return m_anotherRunning;\r
-    }\r
-\r
-    ~wxSingleInstanceCheckerImpl()\r
-    {\r
-        if ( m_hMutex )\r
-        {\r
-            if ( !::DosCloseMutexSem(m_hMutex) )\r
-            {\r
-                wxLogLastError(wxT("DosCloseMutexSem"));\r
-            }\r
-        }\r
-    }\r
-\r
-private:\r
-    // if true, creating the mutex either succeeded\r
-    // or we know it failed because another app is running.\r
-    bool m_anotherRunning;\r
-\r
-    // the mutex handle, may be NULL\r
-    HMTX m_hMutex;\r
-\r
-    DECLARE_NO_COPY_CLASS(wxSingleInstanceCheckerImpl)\r
-};\r
-\r
-// ============================================================================\r
-// wxSingleInstanceChecker implementation\r
-// ============================================================================\r
-\r
-bool wxSingleInstanceChecker::Create(const wxString& name,\r
-                                     const wxString& WXUNUSED(path))\r
-{\r
-    wxASSERT_MSG( !m_impl,\r
-                  wxT("calling wxSingleInstanceChecker::Create() twice?") );\r
-\r
-    // creating unnamed mutex doesn't have the same semantics!\r
-    wxASSERT_MSG( !name.empty(), wxT("mutex name can't be empty") );\r
-\r
-    m_impl = new wxSingleInstanceCheckerImpl;\r
-\r
-    return m_impl->Create(name);\r
-}\r
-\r
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_SNGLINST_CHECKER
+
+#ifndef WX_PRECOMP
+    #include "wx/string.h"
+    #include "wx/log.h"
+#endif //WX_PRECOMP
+
+#include "wx/snglinst.h"
+
+#define INCL_DOSSEMAPHORES
+#define INCL_DOSERRORS
+#include <os2.h>
+
+#include "wx/os2/private.h"
+
+// ----------------------------------------------------------------------------
+// wxSingleInstanceCheckerImpl: the real implementation class
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxSingleInstanceCheckerImpl
+{
+public:
+    wxSingleInstanceCheckerImpl()
+    {
+        m_hMutex = NULL;
+        m_anotherRunning = false;
+    }
+
+    bool Create(const wxString& name)
+    {
+        wxString semName;
+        semName.Printf(wxT("\\SEM32\\%s"), name.c_str());
+        int rc = DosCreateMutexSem(semName.c_str(), &m_hMutex, DC_SEM_SHARED, 1);
+
+        if ( rc == NO_ERROR ) {
+            m_anotherRunning = false;
+            return true;
+        } else if ( rc == ERROR_DUPLICATE_NAME ) {
+            m_anotherRunning = true;
+            return true;
+        } else {
+            m_anotherRunning = false;  // we don't know for sure in this case
+            wxLogLastError(wxT("DosCreateMutexSem"));
+            return false;
+        }
+    }
+
+    bool IsAnotherRunning() const
+    {
+        return m_anotherRunning;
+    }
+
+    ~wxSingleInstanceCheckerImpl()
+    {
+        if ( m_hMutex )
+        {
+            if ( !::DosCloseMutexSem(m_hMutex) )
+            {
+                wxLogLastError(wxT("DosCloseMutexSem"));
+            }
+        }
+    }
+
+private:
+    // if true, creating the mutex either succeeded
+    // or we know it failed because another app is running.
+    bool m_anotherRunning;
+
+    // the mutex handle, may be NULL
+    HMTX m_hMutex;
+
+    DECLARE_NO_COPY_CLASS(wxSingleInstanceCheckerImpl)
+};
+
+// ============================================================================
+// wxSingleInstanceChecker implementation
+// ============================================================================
+
+bool wxSingleInstanceChecker::Create(const wxString& name,
+                                     const wxString& WXUNUSED(path))
+{
+    wxASSERT_MSG( !m_impl,
+                  wxT("calling wxSingleInstanceChecker::Create() twice?") );
+
+    // creating unnamed mutex doesn't have the same semantics!
+    wxASSERT_MSG( !name.empty(), wxT("mutex name can't be empty") );
+
+    m_impl = new wxSingleInstanceCheckerImpl;
+
+    return m_impl->Create(name);
+}
+
 bool wxSingleInstanceChecker::DoIsAnotherRunning() const
 bool wxSingleInstanceChecker::DoIsAnotherRunning() const
-{\r
-    wxCHECK_MSG( m_impl, false, wxT("must call Create() first") );\r
-\r
-    return m_impl->IsAnotherRunning();\r
-}\r
-\r
-wxSingleInstanceChecker::~wxSingleInstanceChecker()\r
-{\r
-    delete m_impl;\r
-}\r
-\r
-#endif // wxUSE_SNGLINST_CHECKER\r
+{
+    wxCHECK_MSG( m_impl, false, wxT("must call Create() first") );
+
+    return m_impl->IsAnotherRunning();
+}
+
+wxSingleInstanceChecker::~wxSingleInstanceChecker()
+{
+    delete m_impl;
+}
+
+#endif // wxUSE_SNGLINST_CHECKER
index d9d2eebdebe4ea717a964fb54949c6df549444b2..2cc8afccbb0dc77ee29a0987019a02815aad7a3c 100644 (file)
-///////////////////////////////////////////////////////////////////////////////\r
-// Name:        tests/controls/label.cpp\r
-// Purpose:     wxControl and wxStaticText label tests\r
-// Author:      Francesco Montorsi\r
-// Created:     2010-3-21\r
-// RCS-ID:      $Id$\r
-// Copyright:   (c) 2010 Francesco Montorsi\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-#include "testprec.h"\r
-\r
-#ifdef __BORLANDC__\r
-    #pragma hdrstop\r
-#endif\r
-\r
-#ifndef WX_PRECOMP\r
-    #include "wx/app.h"\r
-#endif // WX_PRECOMP\r
-\r
-#include "wx/control.h"\r
-#include "wx/stattext.h"\r
-#include "wx/checkbox.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// test class\r
-// ----------------------------------------------------------------------------\r
-\r
-class LabelTestCase : public CppUnit::TestCase\r
-{\r
-public:\r
-    LabelTestCase() { }\r
-\r
-    virtual void setUp();\r
-    virtual void tearDown();\r
-\r
-private:\r
-    CPPUNIT_TEST_SUITE( LabelTestCase );\r
-        CPPUNIT_TEST( GetLabel );\r
-        CPPUNIT_TEST( GetLabelText );\r
-        CPPUNIT_TEST( Statics );\r
-    CPPUNIT_TEST_SUITE_END();\r
-\r
-    void GetLabel();\r
-    void GetLabelText();\r
-    void Statics();\r
-\r
-    wxStaticText *m_st, *m_stWithMarkup;\r
-\r
-    // we cannot test wxControl directly (it's abstract) so we rather test wxCheckBox\r
-    wxCheckBox *m_cb;\r
-\r
-    DECLARE_NO_COPY_CLASS(LabelTestCase)\r
-};\r
-\r
-// register in the unnamed registry so that these tests are run by default\r
-CPPUNIT_TEST_SUITE_REGISTRATION( LabelTestCase );\r
-\r
-// also include in it's own registry so that these tests can be run alone\r
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( LabelTestCase, "LabelTestCase" );\r
-\r
-// ----------------------------------------------------------------------------\r
-// test initialization\r
-// ----------------------------------------------------------------------------\r
-\r
-#define ORIGINAL_LABEL      "original label"\r
-\r
-void LabelTestCase::setUp()\r
-{\r
-    m_st = new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL);\r
-    m_stWithMarkup = new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL,\r
-                                      wxDefaultPosition, wxDefaultSize, wxST_MARKUP);\r
-\r
-    m_cb = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL);\r
-\r
-    CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_st->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_stWithMarkup->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_cb->GetLabel() );\r
-}\r
-\r
-void LabelTestCase::tearDown()\r
-{\r
-    wxDELETE(m_st);\r
-    wxDELETE(m_stWithMarkup);\r
-    wxDELETE(m_cb);\r
-}\r
-\r
-// ----------------------------------------------------------------------------\r
-// the tests themselves\r
-// ----------------------------------------------------------------------------\r
-\r
-#define SET_LABEL(str)                              \\r
-        m_st->SetLabel(str);                        \\r
-        m_stWithMarkup->SetLabel(str);              \\r
-        m_cb->SetLabel(str);\r
-\r
-#define SET_LABEL_TEXT(str)                         \\r
-        m_st->SetLabelText(str);                    \\r
-        m_stWithMarkup->SetLabelText(str);          \\r
-        m_cb->SetLabelText(str);\r
-\r
-void LabelTestCase::GetLabel()\r
-{\r
-    const wxString testLabelArray[] = {\r
-        "label without mnemonics and markup",\r
-        "label with &mnemonic",\r
-        "label with <span foreground='blue'>some</span> <b>markup</b>",\r
-        "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic",\r
-    };\r
-\r
-    // test calls to SetLabel() and then to GetLabel()\r
-\r
-    for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ )\r
-    {\r
-        SET_LABEL(testLabelArray[s]);\r
-\r
-        // GetLabel() should always return the string passed to SetLabel()\r
-        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_st->GetLabel() );\r
-        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_stWithMarkup->GetLabel() );\r
-        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_cb->GetLabel() );\r
-    }\r
-\r
-\r
-    // test calls to SetLabelText() and then to GetLabel()\r
-\r
-    const wxString& testLabel = "label without mnemonics and markup";\r
-    SET_LABEL_TEXT(testLabel);\r
-    CPPUNIT_ASSERT_EQUAL( testLabel, m_st->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabel, m_stWithMarkup->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabel, m_cb->GetLabel() );\r
-\r
-    const wxString& testLabel2 = "label with &mnemonic";\r
-    const wxString& testLabelText2 = "label with &&mnemonic";\r
-    SET_LABEL_TEXT(testLabel2);\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_st->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( "label with &amp;mnemonic", m_stWithMarkup->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_cb->GetLabel() );\r
-\r
-    const wxString& testLabel3 = "label with <span foreground='blue'>some</span> <b>markup</b>";\r
-    SET_LABEL_TEXT(testLabel3);\r
-    CPPUNIT_ASSERT_EQUAL( testLabel3, m_st->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( "label with &lt;span foreground=&apos;blue&apos;&gt;some&lt;/span&gt; &lt;b&gt;markup&lt;/b&gt;", m_stWithMarkup->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabel3, m_cb->GetLabel() );\r
-\r
-    const wxString& testLabel4 = "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic";\r
-    const wxString& testLabelText4 = "label with <span foreground='blue'>some</span> <b>markup</b> and &&mnemonic";\r
-    SET_LABEL_TEXT(testLabel4);\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_st->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( "label with &lt;span foreground=&apos;blue&apos;&gt;some&lt;/span&gt; &lt;b&gt;markup&lt;/b&gt; and &amp;mnemonic", m_stWithMarkup->GetLabel() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_cb->GetLabel() );\r
-}\r
-\r
-void LabelTestCase::GetLabelText()\r
-{\r
-    // test calls to SetLabel() and then to GetLabelText()\r
-\r
-    const wxString& testLabel = "label without mnemonics and markup";\r
-    SET_LABEL(testLabel);\r
-    CPPUNIT_ASSERT_EQUAL( testLabel, m_st->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabel, m_stWithMarkup->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabel, m_cb->GetLabelText() );\r
-\r
-    const wxString& testLabel2 = "label with &mnemonic";\r
-    const wxString& testLabelText2 = "label with mnemonic";\r
-    SET_LABEL(testLabel2);\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_st->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_stWithMarkup->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_cb->GetLabelText() );\r
-\r
-    const wxString& testLabel3 = "label with <span foreground='blue'>some</span> <b>markup</b>";\r
-    SET_LABEL(testLabel3);\r
-    CPPUNIT_ASSERT_EQUAL( testLabel3, m_st->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( "label with some markup", m_stWithMarkup->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabel3, m_cb->GetLabelText() );\r
-\r
-    const wxString& testLabel4 = "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic";\r
-    const wxString& testLabelText4 = "label with <span foreground='blue'>some</span> <b>markup</b> and mnemonic";\r
-    SET_LABEL(testLabel4);\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_st->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( "label with some markup and mnemonic", m_stWithMarkup->GetLabelText() );\r
-    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_cb->GetLabelText() );\r
-\r
-\r
-    const wxString testLabelArray[] = {\r
-        "label without mnemonics and markup",\r
-        "label with &mnemonic",\r
-        "label with <span foreground='blue'>some</span> <b>markup</b>",\r
-        "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic",\r
-    };\r
-\r
-    // test calls to SetLabelText() and then to GetLabelText()\r
-\r
-    for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ )\r
-    {\r
-        SET_LABEL_TEXT(testLabelArray[s]);\r
-\r
-        // GetLabelText() should always return the string passed to SetLabelText()\r
-        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_st->GetLabelText() );\r
-        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_stWithMarkup->GetLabelText() );\r
-        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_cb->GetLabelText() );\r
-    }\r
-}\r
-\r
-void LabelTestCase::Statics()\r
-{\r
-    CPPUNIT_ASSERT_EQUAL( "mnemonic", wxControl::RemoveMnemonics("&mnemonic") );\r
-    CPPUNIT_ASSERT_EQUAL( "&mnemonic", wxControl::RemoveMnemonics("&&mnemonic") );\r
-    CPPUNIT_ASSERT_EQUAL( "&mnemonic", wxControl::RemoveMnemonics("&&&mnemonic") );\r
-    CPPUNIT_ASSERT_EQUAL( "", wxStaticText::RemoveMarkup("<b></b>") );\r
-}\r
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/controls/label.cpp
+// Purpose:     wxControl and wxStaticText label tests
+// Author:      Francesco Montorsi
+// Created:     2010-3-21
+// RCS-ID:      $Id$
+// Copyright:   (c) 2010 Francesco Montorsi
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "testprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+#endif // WX_PRECOMP
+
+#include "wx/control.h"
+#include "wx/stattext.h"
+#include "wx/checkbox.h"
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class LabelTestCase : public CppUnit::TestCase
+{
+public:
+    LabelTestCase() { }
+
+    virtual void setUp();
+    virtual void tearDown();
+
+private:
+    CPPUNIT_TEST_SUITE( LabelTestCase );
+        CPPUNIT_TEST( GetLabel );
+        CPPUNIT_TEST( GetLabelText );
+        CPPUNIT_TEST( Statics );
+    CPPUNIT_TEST_SUITE_END();
+
+    void GetLabel();
+    void GetLabelText();
+    void Statics();
+
+    wxStaticText *m_st, *m_stWithMarkup;
+
+    // we cannot test wxControl directly (it's abstract) so we rather test wxCheckBox
+    wxCheckBox *m_cb;
+
+    DECLARE_NO_COPY_CLASS(LabelTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( LabelTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( LabelTestCase, "LabelTestCase" );
+
+// ----------------------------------------------------------------------------
+// test initialization
+// ----------------------------------------------------------------------------
+
+#define ORIGINAL_LABEL      "original label"
+
+void LabelTestCase::setUp()
+{
+    m_st = new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL);
+    m_stWithMarkup = new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL,
+                                      wxDefaultPosition, wxDefaultSize, wxST_MARKUP);
+
+    m_cb = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL);
+
+    CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_st->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_stWithMarkup->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( ORIGINAL_LABEL, m_cb->GetLabel() );
+}
+
+void LabelTestCase::tearDown()
+{
+    wxDELETE(m_st);
+    wxDELETE(m_stWithMarkup);
+    wxDELETE(m_cb);
+}
+
+// ----------------------------------------------------------------------------
+// the tests themselves
+// ----------------------------------------------------------------------------
+
+#define SET_LABEL(str)                              \
+        m_st->SetLabel(str);                        \
+        m_stWithMarkup->SetLabel(str);              \
+        m_cb->SetLabel(str);
+
+#define SET_LABEL_TEXT(str)                         \
+        m_st->SetLabelText(str);                    \
+        m_stWithMarkup->SetLabelText(str);          \
+        m_cb->SetLabelText(str);
+
+void LabelTestCase::GetLabel()
+{
+    const wxString testLabelArray[] = {
+        "label without mnemonics and markup",
+        "label with &mnemonic",
+        "label with <span foreground='blue'>some</span> <b>markup</b>",
+        "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic",
+    };
+
+    // test calls to SetLabel() and then to GetLabel()
+
+    for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ )
+    {
+        SET_LABEL(testLabelArray[s]);
+
+        // GetLabel() should always return the string passed to SetLabel()
+        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_st->GetLabel() );
+        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_stWithMarkup->GetLabel() );
+        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_cb->GetLabel() );
+    }
+
+
+    // test calls to SetLabelText() and then to GetLabel()
+
+    const wxString& testLabel = "label without mnemonics and markup";
+    SET_LABEL_TEXT(testLabel);
+    CPPUNIT_ASSERT_EQUAL( testLabel, m_st->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( testLabel, m_stWithMarkup->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( testLabel, m_cb->GetLabel() );
+
+    const wxString& testLabel2 = "label with &mnemonic";
+    const wxString& testLabelText2 = "label with &&mnemonic";
+    SET_LABEL_TEXT(testLabel2);
+    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_st->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( "label with &amp;mnemonic", m_stWithMarkup->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_cb->GetLabel() );
+
+    const wxString& testLabel3 = "label with <span foreground='blue'>some</span> <b>markup</b>";
+    SET_LABEL_TEXT(testLabel3);
+    CPPUNIT_ASSERT_EQUAL( testLabel3, m_st->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( "label with &lt;span foreground=&apos;blue&apos;&gt;some&lt;/span&gt; &lt;b&gt;markup&lt;/b&gt;", m_stWithMarkup->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( testLabel3, m_cb->GetLabel() );
+
+    const wxString& testLabel4 = "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic";
+    const wxString& testLabelText4 = "label with <span foreground='blue'>some</span> <b>markup</b> and &&mnemonic";
+    SET_LABEL_TEXT(testLabel4);
+    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_st->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( "label with &lt;span foreground=&apos;blue&apos;&gt;some&lt;/span&gt; &lt;b&gt;markup&lt;/b&gt; and &amp;mnemonic", m_stWithMarkup->GetLabel() );
+    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_cb->GetLabel() );
+}
+
+void LabelTestCase::GetLabelText()
+{
+    // test calls to SetLabel() and then to GetLabelText()
+
+    const wxString& testLabel = "label without mnemonics and markup";
+    SET_LABEL(testLabel);
+    CPPUNIT_ASSERT_EQUAL( testLabel, m_st->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( testLabel, m_stWithMarkup->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( testLabel, m_cb->GetLabelText() );
+
+    const wxString& testLabel2 = "label with &mnemonic";
+    const wxString& testLabelText2 = "label with mnemonic";
+    SET_LABEL(testLabel2);
+    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_st->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_stWithMarkup->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( testLabelText2, m_cb->GetLabelText() );
+
+    const wxString& testLabel3 = "label with <span foreground='blue'>some</span> <b>markup</b>";
+    SET_LABEL(testLabel3);
+    CPPUNIT_ASSERT_EQUAL( testLabel3, m_st->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( "label with some markup", m_stWithMarkup->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( testLabel3, m_cb->GetLabelText() );
+
+    const wxString& testLabel4 = "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic";
+    const wxString& testLabelText4 = "label with <span foreground='blue'>some</span> <b>markup</b> and mnemonic";
+    SET_LABEL(testLabel4);
+    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_st->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( "label with some markup and mnemonic", m_stWithMarkup->GetLabelText() );
+    CPPUNIT_ASSERT_EQUAL( testLabelText4, m_cb->GetLabelText() );
+
+
+    const wxString testLabelArray[] = {
+        "label without mnemonics and markup",
+        "label with &mnemonic",
+        "label with <span foreground='blue'>some</span> <b>markup</b>",
+        "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic",
+    };
+
+    // test calls to SetLabelText() and then to GetLabelText()
+
+    for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ )
+    {
+        SET_LABEL_TEXT(testLabelArray[s]);
+
+        // GetLabelText() should always return the string passed to SetLabelText()
+        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_st->GetLabelText() );
+        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_stWithMarkup->GetLabelText() );
+        CPPUNIT_ASSERT_EQUAL( testLabelArray[s], m_cb->GetLabelText() );
+    }
+}
+
+void LabelTestCase::Statics()
+{
+    CPPUNIT_ASSERT_EQUAL( "mnemonic", wxControl::RemoveMnemonics("&mnemonic") );
+    CPPUNIT_ASSERT_EQUAL( "&mnemonic", wxControl::RemoveMnemonics("&&mnemonic") );
+    CPPUNIT_ASSERT_EQUAL( "&mnemonic", wxControl::RemoveMnemonics("&&&mnemonic") );
+    CPPUNIT_ASSERT_EQUAL( "", wxStaticText::RemoveMarkup("<b></b>") );
+}