wxWidgets/docs
Vadim Zeitlin e70fc11ef1 Replace CppUnit with Catch for unit tests
Drop the legacy CppUnit testing framework used for the unit tests.
Replacing it with Catch has the advantage of not requiring CppUnit
libraries to be installed on the system in order to be able to run
tests (Catch is header-only and a copy of it is now included in the
main repository itself) and, in the future, of being able to write
the tests in a much more natural way.

For now, however, avoid changing the existing tests code as much as
[reasonably] possible to avoid introducing bugs in them and provide
the CppUnit compatibility macros in the new wx/catch_cppunit.h header
which allow to preserve the 99% of the existing code unchanged. Some
of the required changes are:

 - Decompose asserts using "a && b" conditions into multiple asserts
   checking "a" and "b" independently. This would have been better
   even with CppUnit (to know which part of condition exactly failed)
   and is required with Catch.

 - Use extra parentheses around such conditions when they can't be
   easily decomposed in the arrays test, due to the use of macros.
   This is not ideal from the point of view of messages given when
   the tests fail but will do for now.

 - Rewrite asserts using "a || b" as a combination of condition
   checks and assert macros. Again, this is better anyhow, and is
   required with Catch. Incidentally, this allowed to fix a bug in
   the "exec" unit test which didn't leave enough time for the new
   process to be launched before trying to kill it.

 - Remove multiple CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() macros,
   our emulation of this macro can be used only once.

 - Provide string conversions using Catch-specific StringMaker for
   a couple of types.

 - Replace custom wxImage comparison with a Catch-specific matcher
   class.

 - Remove most of test running logic from test.cpp, in particular don't
   parse command line ourselves any longer but use Catch built-in
   command line parser. This is a source of a minor regression:
   previously, both "Foo" and "FooTestCase" could be used as the name of
   the test to run, but now only the latter is accepted.
2017-11-02 01:53:16 +01:00
..
base Drop Mac prefix when referencing OS X. 2016-02-04 09:54:36 +01:00
contributing Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
dfb Updated links and mailing list addresses. 2015-10-30 20:06:09 -06:00
doxygen Remove unused configure --enable-objc_uniquifying option 2017-10-21 19:06:33 +02:00
gtk Remove obsolete and useless --enable_no_deps configure option 2017-05-27 19:03:31 +02:00
ios Add architecture i386 to iOS build instructions. 2016-02-23 11:23:00 +01:00
motif Remove obsolete and useless --enable_no_deps configure option 2017-05-27 19:03:31 +02:00
msw Mention workaround for a bug with parallel build with mingw32-make 2017-05-07 00:16:55 +02:00
osx Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
publicity Doc updates for 3.1.1 release 2016-06-06 03:17:23 +04:00
qt Updated links and mailing list addresses. 2015-10-30 20:06:09 -06:00
tech Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
univ Remove obsolete symbols from overviews and install notes 2015-12-03 21:26:31 +01:00
vms
wine
x11 Remove obsolete and useless --enable_no_deps configure option 2017-05-27 19:03:31 +02:00
changes_30.txt Don't mention that wxVariant doesn't derive from wxObject 2015-10-22 00:02:59 +02:00
changes.txt Add support for UTF8 filenames in wxZipOutputStream 2017-10-27 20:27:44 +02:00
gpl.txt
index.htm Use simpler HTML5 doctype in the documentation index 2016-03-03 22:17:22 +01:00
lgpl.txt
licence.txt
licendoc.txt
preamble.txt
readme.txt Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
release.md Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
xserver.txt adding x server license terms for polygon methods 2013-05-24 17:01:54 +00:00

wxWidgets 3.1.1 Release Notes
=============================

Welcome to the latest development release of wxWidgets, a free and open source
cross-platform C++ framework for writing advanced GUI applications using native
controls.

wxWidgets allows you to write native-looking GUI applications for all the major
desktop platforms and also helps with abstracting the differences in the non-GUI
aspects between them. It is free for the use in both open source and commercial
applications, comes with the full, easy to read and modify, source and extensive
documentation and a collection of more than a hundred examples. You can learn
more about wxWidgets at:

* https://www.wxwidgets.org/

Documentation is available online at:

* http://docs.wxwidgets.org/3.1.1/

wxWidgets sources and binaries for the selected platforms are available for
download from:

* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.1.1/


Changes
-------

Compared to the stable 3.0.x series, this version brings many
improvements and even more bug fixes, please see the change log

https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.1.1/docs/changes.txt

for the incomplete list of the most important ones. Here is the
maximally condensed summary:

- New classes: wxActivityIndicator, wxAddRemoveCtrl,
  wxAppProgressIndicator, wxNativeWindow, wxPowerResourceBlocker.
- And methods: wxDateTime::GetWeekBasedYear(), wxListBox::GetTopItem(),
  wxProcess::Activate(), wxTextEntry::ForceUpper(), several ones in
  wxRendererNative, wxStandardPaths::GetUserDir(), wxUIActionSimulator
  ::Select() and many others. Also new wxEVT_MAGNIFY event.
- Significant improvements to: wxBusyInfo, wxNotificationMessage.
- All around better support for high DPI monitors.
- Much newer versions of bundled 3rd party libraries (notably libpng)
  and support for GStreamer 1.0 under Unix.
- Revamped OpenGL support better suited to modern OpenGL (3.2+).
- Further C++11 support improvements.
- Support for latest compilers: MSVS 2015, g++ 5.3, clang 3.8.
- A lot of bug fixes in wxGTK3 and wxOSX/Cocoa ports.
- New experimental wxQt port.



Platforms Supported
-------------------

wxWidgets currently supports the following primary platforms:

* Windows XP, Vista, 7, 8 and 10 (32/64 bits).
* Most Unix variants using the GTK+ toolkit (version 2.6 or newer)
* OS X (10.7 or newer) using Cocoa (32/64 bits)

There is some support for the following platforms:

* Most Unix variants with X11
* Most Unix variants with Motif/Lesstif
* Most Unix variants with GTK+ 1.2
* Most Unix variants with Qt 5 or newer (experimental)

Most popular C++ compilers are supported; see the install.txt file for each
platform (following the links from docs/index.htm).


Files
-----

wxWidgets is distributed in source form in several archive formats. ZIP and 7z
archives are for Microsoft Windows users and contain the files with DOS/Windows
line endings while the compressed tar archives are for Unix systems (including
OS X) and contain the files with Unix line endings. Please notice that some
Windows tools still don't accept files with Unix line endings and that compiling
sources with DOS line endings under Unix will fail, so please choose the correct
file for your system.

In addition to the sources, documentation in HTML, CHM and HTB (wxWidgets help
viewer) formats is provided as well as an installer for Microsoft Windows.
Notice that you will still need to compile wxWidgets even when using the
installer.

We also supply binaries of wxMSW libraries built with several versions of
Microsoft Visual C++ and GNU g++ compiler for this release.


Installation
------------

Unless you have downloaded the binaries for your compiler, you will need to
build wxWidgets before you can test out the samples or write your own
applications. For installation information, please see the install.txt file in
the docs subdirectory appropriate for the platform you use.


Licence
-------

For licensing information, please see the files:

* docs/preamble.txt
* docs/licence.txt
* docs/licendoc.txt
* docs/gpl.txt
* docs/lgpl.txt
* docs/xserver.txt

Although this may seem complex, it is there to allow authors of proprietary,
commercial applications to use wxWidgets in addition to those writing GPL'ed
applications. In summary, the licence is LGPL plus a clause allowing
unrestricted distribution of application binaries. To answer a FAQ, you don't
have to distribute any source if you wish to write commercial applications using
wxWidgets.

However, if you distribute wxGTK, wxQt or wxMotif (with Lesstif) version of your
application, don't forget that it is linked against GTK+, Qt or Lesstif, which
are covered by LGPL *without* exception notice and so is bound by its
requirements.

If you use TIFF image handler, please see src/tiff/COPYRIGHT for libtiff licence
details.

If you use JPEG image handler, documentation for your program should contain
following sentence: "This software is based in part on the work of the
Independent JPEG Group". See src/jpeg/README for details.

If you use wxRegEx class on a system without native regular expressions support
(i.e. MS Windows), see src/regex/COPYRIGHT file for Henry Spencer's regular
expression library copyright.

If you use wxXML classes or XRC, see src/expat/COPYING for licence details.


Reporting Bugs
--------------

The wxWidgets bug tracker can be found here:

* https://trac.wxwidgets.org/newticket

Please use the search function of our Trac installation to find any possibly
relevant bugs before reporting new ones. Also please notice that often trying to
correct the bug yourself is the quickest way to fix it. Even if you fail to do
it, you may discover valuable information allowing us to fix it while doing it.
We also give much higher priority to bug reports with patches fixing the
problems so this ensures that your report will be addressed sooner.


Further Information
-------------------

If you are looking for support, you can get it from

* Mailing Lists: https://www.wxwidgets.org/support/mailing-lists/
* Discussion Forums: https://forums.wxwidgets.org/
* #wxwidgets IRC Channel: https://www.wxwidgets.org/support/irc/
* Stack Overflow (tag your questions with "wxwidgets"):
  https://stackoverflow.com/questions/tagged/wxwidgets

Have fun!

The wxWidgets Team, February 2016