Wt 3.1.9, JWt 3.1.9

  • Posted by koen
  • Friday, April 8, 2011 @ 14:26

A new version of the library packed with lots of bug fixes and a fair share of new features.

The highlights of this release are:

Refactoring of WSpinBox and WSlider widgets

Both of these form elements have been refactored to allow support for the native HTML5 controls, where available. The spinbox also received a number of improvements for formatting and validation, and now comes in an integer and double variant.

HTML5 History API

As already discussed in a previous post, Wt now uses the HTML5 History API where available (that is currently Firefox 4, Chrome and Safari) to use the same URLs in sessions with or without JavaScript.

Font rendering improvements in WPdfImage, WRasterImage (C++)

Text rendering support in WPdfImage and WRasterImage suffered from poor (or nonexistent) support for unicode text. With this release, both rendering devices received first-class support for unicode text rendering. In both cases, font selection may be assisted by libpango, so that for a given unicode string, one or more fonts are selected based on their coverage of unicode characters.

To enable unicode support in WPdfImage, we contributed a number of patches to libharu, to include full unicode support and to properly use a wider variety of TrueType fonts. Pending integration in libharu, you should use this Unicode fork of libharu.

Plural nouns in localization of strings (C++)

While in English and many other languages a noun has only two forms (singular and plural), in many other languages the grammar is more complicated. We implemented WString::trn() which is given an amount, and which uses expressions, like those supported by ngettext(), to chose a particular plural form depending on the amount.

Thread-safe and lock-free user event delivery to sessions (C++)

Taking locks in a multi-threaded application is usually needed to allow safe access to a resource, and an application lock is provided to safely access an application session from outside the event loop. Yet, locking introduces the danger of dead-locks, and use of SyncLock is a (complicated) mitigation for this. We now added a simple alternative to to post an event to a session. This method is dead-lock free and properly takes into account the possibility that the session may no longer exist or is being terminated. We ported the examples (simplechat and codeview) over to this for event delivery to other sessions.

Tags:
9 comments
  • Posted by anonymous
  • 12 years ago
cool new fading feature on the homepage!
hope it comes to the toolkit soon! ;-)
br,
max
  • Posted by koen
  • 12 years ago
As soon as the next release (within weeks) !
  • Posted by lmatusz
  • 12 years ago
I have compiled wt 3.1.9 with boost 1.46.1. All i had to do is changing one file. (it was about to add path_obj.string() in some file, where path_obj was some object representing path).
Here is my question: does wt 3.1.9 works with boost 1.46.1 ? (i have successfully compiled it but not tested it).
  • Posted by koen
  • 12 years ago
It'll work if you can build it. It doesn't build out of the box because the boost.filesystem API broke. The wt git HEAD now works out of the box with boost 1.46.1
  • Posted by anonymous
  • 12 years ago
love it!
  • Posted by anonymous
  • 12 years ago
It fails to build the examples on openSUSE 11.4.
/usr/src/packages/BUILD/wt-3.1.9/examples/filetreetable/FileTreeTableNode.C: In constructor 'FileTreeTableNode::FileTreeTableNode(const boost::filesystem3::path&)':
/usr/src/packages/BUILD/wt-3.1.9/examples/filetreetable/FileTreeTableNode.C:32:15: error: no matching function for call to 'Wt::WTreeTableNode::WTreeTableNode(boost::filesystem3::path, Wt::WIconPair*)'
/usr/src/packages/BUILD/wt-3.1.9/src/Wt/WTreeTableNode:35:3: note: candidates are: Wt::WTreeTableNode::WTreeTableNode(const Wt::WString&, Wt::WIconPair*, Wt::WTreeTableNode*)
/usr/src/packages/BUILD/wt-3.1.9/src/Wt/WTreeTableNode:29:1: note: Wt::WTreeTableNode::WTreeTableNode(const Wt::WTreeTableNode&)
  • Posted by koen
  • 12 years ago
Hey, this seems to be because of how Boost broke their filesystem package (in Boost 1.46). We are still picking up the broken pieces. For the time being, you should use Boost 1.45, or not try to build the examples (-DBUILD_EXAMPLES=OFF).
  • Posted by anonymous
  • 12 years ago
Congratulations and Great to hear!
  • Posted by zhmsong
  • 12 years ago
from mine :-)

Contact us for more information
or a personalised quotation