Index: trunk/resources/tspsg.qrc
===================================================================
--- trunk/resources/tspsg.qrc	(revision 116)
+++ trunk/resources/tspsg.qrc	(revision 117)
@@ -1,26 +1,33 @@
 <RCC>
-    <qresource prefix="/images" >
+    <qresource prefix="/images">
         <file>tspsg.png</file>
-        <file>icons/back.png</file>
-        <file>icons/button_cancel.png</file>
-        <file>icons/button_ok.png</file>
-        <file>icons/color_line.png</file>
-        <file>icons/contents.png</file>
-        <file>icons/contexthelp.png</file>
-        <file>icons/document_preview.png</file>
-        <file>icons/exit.png</file>
-        <file>icons/filenew.png</file>
-        <file>icons/fileopen.png</file>
-        <file>icons/fileprint.png</file>
-        <file>icons/filesave.png</file>
-        <file>icons/filesaveas.png</file>
-        <file>icons/fonts.png</file>
-        <file>icons/help_about.png</file>
-        <file>icons/help_browser.png</file>
-        <file>icons/help_hint.png</file>
-        <file>icons/locale.png</file>
-        <file>icons/preferences_system.png</file>
+        <file>icons/application-exit.png</file>
+        <file>icons/configure-toolbars.png</file>
+        <file>icons/dialog-cancel.png</file>
+        <file>icons/dialog-ok.png</file>
+        <file>icons/document-new.png</file>
+        <file>icons/document-open.png</file>
+        <file>icons/document-print.png</file>
+        <file>icons/document-print-preview.png</file>
+        <file>icons/document-save.png</file>
+        <file>icons/document-save-as.png</file>
+        <file>icons/format-text-color.png</file>
+        <file>icons/go-down.png</file>
+        <file>icons/go-next.png</file>
+        <file>icons/go-previous.png</file>
+        <file>icons/go-up.png</file>
+        <file>icons/help-about.png</file>
+        <file>icons/help-contents.png</file>
+        <file>icons/help-contextual.png</file>
+        <file>icons/help-hint.png</file>
+        <file>icons/list-add.png</file>
+        <file>icons/list-remove.png</file>
+        <file>icons/preferences-desktop-font.png</file>
+        <file>icons/preferences-desktop-locale.png</file>
+        <file>icons/preferences-desktop-theme.png</file>
+        <file>icons/preferences-system.png</file>
         <file>icons/qtlogo-64.png</file>
         <file>icons/roll.png</file>
+        <file>icons/system-software-update.png</file>
     </qresource>
 </RCC>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/INSTALL.TXT
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/INSTALL.TXT	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/INSTALL.TXT	(revision 117)
@@ -0,0 +1,254 @@
+INSTALLATION INSTRUCTIONS
+
+These instructions refer to the package you are installing as
+some-package.tar.gz or some-package.zip. The .zip file is intended for use
+on Windows.
+
+The directory you choose for the installation will be referred to as
+your-install-dir.
+
+Note to Qt Visual Studio Integration users: In the instructions below,
+instead of building from command line with nmake, you can use the menu
+command 'Qt->Open Solution from .pro file' on the .pro files in the
+example and plugin directories, and then build from within Visual
+Studio.
+
+Unpacking and installation
+--------------------------
+
+1.  Unpacking the archive (if you have not done so already).
+
+    On Unix and Mac OS X (in a terminal window):
+
+	cd your-install-dir
+	gunzip some-package.tar.gz
+	tar xvf some-package.tar
+
+    This creates the subdirectory some-package containing the files.
+
+    On Windows:
+
+    Unpack the .zip archive by right-clicking it in explorer and
+    choosing "Extract All...". If your version of Windows does not
+    have zip support, you can use the infozip tools available
+    from www.info-zip.org.
+
+    If you are using the infozip tools (in a command prompt window):
+	cd your-install-dir
+	unzip some-package.zip
+
+2.  Configuring the package.
+
+    The configure script is called "configure" on unix/mac and
+    "configure.bat" on Windows. It should be run from a command line
+    after cd'ing to the package directory. 
+
+    You can choose whether you want to use the component by including
+    its source code directly into your project, or build the component
+    as a dynamic shared library (DLL) that is loaded into the
+    application at run-time. The latter may be preferable for
+    technical or licensing (LGPL) reasons. If you want to build a DLL,
+    run the configure script with the argument "-library". Also see
+    the note about usage below.
+
+    (Components that are Qt plugins, e.g. styles and image formats,
+    are by default built as a plugin DLL.)
+
+    The configure script will prompt you in some cases for further
+    information. Answer these questions and carefully read the license text
+    before accepting the license conditions. The package cannot be used if
+    you do not accept the license conditions.
+
+3.  Building the component and examples (when required).
+
+    If a DLL is to be built, or if you would like to build the
+    examples, next give the commands
+
+        qmake
+        make          [or nmake if your are using Microsoft Visual C++]
+
+    The example program(s) can be found in the directory called
+    "examples" or "example".
+
+    Components that are Qt plugins, e.g. styles and image formats, are
+    ready to be used as soon as they are built, so the rest of this
+    installation instruction can be skipped.
+
+4.  Building the Qt Designer plugin (optional).
+
+    Some of the widget components are provided with plugins for Qt
+    Designer. To build and install the plugin, cd into the
+    some-package/plugin directory and give the commands
+
+	qmake
+	make           [or nmake if your are using Microsoft Visual C++]
+
+    Restart Qt Designer to make it load the new widget plugin.
+
+    Note: If you are using the built-in Qt Designer from the Qt Visual
+    Studio Integration, you will need to manually copy the plugin DLL
+    file, i.e. copy
+	%QTDIR%\plugins\designer\some-component.dll 
+    to the Qt Visual Studio Integration plugin path, typically:
+	C:\Program Files\Trolltech\Qt VS Integration\plugins
+
+    Note: If you for some reason are using a Qt Designer that is built
+    in debug mode, you will need to build the plugin in debug mode
+    also. Edit the file plugin.pro in the plugin directory, changing
+    'release' to 'debug' in the CONFIG line, before running qmake.
+
+
+
+Solutions components are intended to be used directly from the package
+directory during development, so there is no 'make install' procedure.
+
+
+Using a component in your project
+---------------------------------
+
+To use this component in your project, add the following line to the
+project's .pro file (or do the equivalent in your IDE):
+
+    include(your-install-dir/some-package/src/some-package.pri)
+
+This adds the package's sources and headers to the SOURCES and HEADERS
+project variables respectively (or, if the component has been
+configured as a DLL, it adds that library to the LIBS variable), and
+updates INCLUDEPATH to contain the package's src
+directory. Additionally, the .pri file may include some dependencies
+needed by the package.
+
+To include a header file from the package in your sources, you can now
+simply use:
+
+    #include <SomeClass>
+
+or alternatively, in pre-Qt 4 style:
+
+    #include <some-class.h>
+
+Refer to the documentation to see the classes and headers this
+components provides.
+
+
+
+Install documentation (optional)
+--------------------------------
+
+The HTML documentation for the package's classes is located in the
+your-install-dir/some-package/doc/html/index.html. You can open this
+file and read the documentation with any web browser.
+
+To install the documentation into Qt Assistant (for Qt version 4.4 and
+later):
+
+1.  In Assistant, open the Edit->Preferences dialog and choose the
+    Documentation tab. Click the Add... button and select the file
+       your-install-dir/some-package/doc/html/some-package.qch
+    
+For Qt versions prior to 4.4, do instead the following:
+
+1.  The directory your-install-dir/some-package/doc/html contains a
+    file called some-package.dcf. Execute the following commands in a
+    shell, command prompt or terminal window:
+
+	cd your-install-dir/some-package/doc/html/
+	assistant -addContentFile some-package.dcf
+
+The next time you start Qt Assistant, you can access the package's
+documentation.
+
+
+Removing the documentation from assistant
+-----------------------------------------
+
+If you have installed the documentation into Qt Assistant, and want to uninstall it, do as follows, for Qt version 4.4 and later:
+
+1.  In Assistant, open the Edit->Preferences dialog and choose the
+    Documentation tab. In the list of Registered Documentation, select
+    the item com.nokia.qtsolutions.some-package_version, and click
+    the Remove button.
+
+For Qt versions prior to 4.4, do instead the following:
+
+1.  The directory your-install-dir/some-package/doc/html contains a
+    file called some-package.dcf. Execute the following commands in a
+    shell, command prompt or terminal window:
+
+	cd your-install-dir/some-package/doc/html/
+	assistant -removeContentFile some-package.dcf
+
+
+
+Using the component as a DLL
+----------------------------
+
+1. Normal components
+
+    The shared library (DLL) is built and placed in the
+    some-package/lib directory. It is intended to be used directly
+    from there during development. When appropriate, both debug and
+    release versions are built, since the run-time linker will in some
+    cases refuse to load a debug-built DLL into a release-built
+    application or vice versa.
+
+    The following steps are taken by default to help the dynamic
+    linker to locate the DLL at run-time (during development):
+
+    Unix: The some-package.pri file will add linker instructions to
+    add the some-package/lib directory to the rpath of the
+    executable. (When distributing, or if your system does not support
+    rpath, you can copy the shared library to another place that is
+    searched by the dynamic linker, e.g. the "lib" directory of your
+    Qt installation.)
+
+    Mac: The full path to the library is hardcoded into the library
+    itself, from where it is copied into the executable at link time,
+    and ready by the dynamic linker at run-time. (When distributing,
+    you will want to edit these hardcoded paths in the same way as for
+    the Qt DLLs. Refer to the document "Deploying an Application on
+    Mac OS X" in the Qt Reference Documentation.)
+
+    Windows: the .dll file(s) are copied into the "bin" directory of
+    your Qt installation. The Qt installation will already have set up
+    that directory to be searched by the dynamic linker.
+
+
+2. Plugins
+
+    For Qt Solutions plugins (e.g. image formats), both debug and
+    release versions of the plugin are built by default when
+    appropriate, since in some cases the release Qt library will not
+    load a debug plugin, and vice versa. The plugins are automatically
+    copied into the plugins directory of your Qt installation when
+    built, so no further setup is required.
+
+    Plugins may also be built statically, i.e. as a library that will be
+    linked into your application executable, and so will not need to
+    be redistributed as a separate plugin DLL to end users. Static
+    building is required if Qt itself is built statically. To do it,
+    just add "static" to the CONFIG variable in the plugin/plugin.pro
+    file before building. Refer to the "Static Plugins" section in the
+    chapter "How to Create Qt Plugins" for explanation of how to use a
+    static plugin in your application. The source code of the example
+    program(s) will also typically contain the relevant instructions
+    as comments.
+
+
+
+Uninstalling
+------------
+
+    The following command will remove any fils that have been
+    automatically placed outside the package directory itself during
+    installation and building
+
+	make distclean [or nmake if your are using Microsoft Visual C++]
+
+    If Qt Assistant documentation or Qt Designer plugins have been
+    installed, they can be uninstalled manually, ref. above.
+
+
+Enjoy! :)
+
+- The Qt Solutions Team.
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LGPL_EXCEPTION.txt
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LGPL_EXCEPTION.txt	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LGPL_EXCEPTION.txt	(revision 117)
@@ -0,0 +1,23 @@
+Nokia Qt LGPL Exception version 1.1
+
+As an additional permission to the GNU Lesser General Public License
+version 2.1, the object code form of a "work that uses the Library"
+may incorporate material from a header file that is part of the
+Library.  You may distribute such object code under terms of your
+choice, provided that:
+(i) the header files of the Library have not been modified; and
+(ii) the incorporated material is limited to numerical parameters,
+data structure layouts, accessors, macros, inline functions and
+templates; and 
+(iii) you comply with the terms of Section 6 of the GNU
+Lesser General Public License version 2.1.
+
+Moreover, you may apply this exception to a modified version of the
+Library, provided that such modification does not involve copying
+material from the Library into the modified Library?s header files
+unless such material is limited to (i) numerical parameters; (ii) data
+structure layouts; (iii) accessors; and (iv) small macros, templates
+and inline functions of five lines or less in length.
+
+Furthermore, you are not required to apply this additional permission
+to a modified version of the Library.
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.GPL3
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.GPL3	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.GPL3	(revision 117)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    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.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.LGPL
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.LGPL	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.LGPL	(revision 117)
@@ -0,0 +1,513 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, 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
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/README.TXT
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/README.TXT	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/README.TXT	(revision 117)
@@ -0,0 +1,7 @@
+Toolbar Dialog v2.2
+
+The Toolbar Dialog component provides customizing functionality
+for toolbars.
+
+
+
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/buildlib/buildlib.pro
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/buildlib/buildlib.pro	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/buildlib/buildlib.pro	(revision 117)
@@ -0,0 +1,13 @@
+TEMPLATE=lib
+CONFIG += qt dll qttoolbardialog-buildlib
+mac:CONFIG += absolute_library_soname
+win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all
+include(../src/qttoolbardialog.pri)
+TARGET = $$QTTOOLBARDIALOG_LIBNAME
+DESTDIR = $$QTTOOLBARDIALOG_LIBDIR
+win32 {
+    DLLDESTDIR = $$[QT_INSTALL_BINS]
+    QMAKE_DISTCLEAN += $$[QT_INSTALL_BINS]\\$${QTTOOLBARDIALOG_LIBNAME}.dll
+}
+target.path = $$DESTDIR
+INSTALLS += target
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/common.pri
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/common.pri	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/common.pri	(revision 117)
@@ -0,0 +1,6 @@
+infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qttoolbardialog-uselib
+TEMPLATE += fakelib
+QTTOOLBARDIALOG_LIBNAME = $$qtLibraryTarget(QtSolutions_ToolbarDialog-2.2)
+TEMPLATE -= fakelib
+QTTOOLBARDIALOG_LIBDIR = $$PWD/lib
+unix:qttoolbardialog-uselib:!qttoolbardialog-buildlib:QMAKE_RPATHDIR += $$QTTOOLBARDIALOG_LIBDIR
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/configure.bat
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/configure.bat	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/configure.bat	(revision 117)
@@ -0,0 +1,134 @@
+@echo off
+
+rem
+rem "Main"
+rem
+
+if not "%1"=="" (
+    if not "%1"=="-library" (
+        call :PrintUsage
+        goto EOF
+    )
+)
+
+rem only ask to accept the license text once
+if exist .licenseAccepted goto HandleArgs
+
+rem determine if free or commercial package
+set edition=commercial
+if exist LICENSE.LGPL. set edition=free
+
+if %edition%==free (
+    call :HandleFree
+) else (
+    call :RegionLoop
+    call :Comm
+)
+echo .
+
+if not exist .licenseAccepted (
+    echo You are not licensed to use this software.
+    goto EOF
+)
+
+:HandleArgs
+if exist config.pri. del config.pri
+if "%1"=="-library" (
+    echo Configuring to build this component as a dynamic library.
+    echo SOLUTIONS_LIBRARY = yes > config.pri
+)
+
+echo .
+echo This component is now configured.
+echo .
+echo To build the component library (if requested) and example(s),
+echo run qmake and your make or nmake command.
+echo .
+echo To remove or reconfigure, run make (nmake) distclean.
+echo .
+
+goto EOF
+
+rem
+rem "License acceptance loops"
+rem
+
+:RegionLoop
+    echo .
+    echo Please choose your region.
+    echo .
+    echo Type 1 for North or South America.
+    echo Type 2 for anywhere outside North and South America.
+    echo .
+    set /p region=Select: 
+    if %region%==1 (
+	set licenseFile=LICENSE.US
+	goto EOF
+    )
+    if %region%==2 (
+	set licenseFile=LICENSE.NO
+	goto EOF
+    )
+goto RegionLoop
+
+:HandleFree
+    echo .
+    echo You are licensed to use this software under the terms of
+    echo the GNU General Public License (GPL) version 3, or
+    echo the GNU Lesser General Public License (LGPL) version 2.1
+    echo with certain additional extra rights as specified in the
+    echo Nokia Qt LGPL Exception version 1.1.
+    echo .
+    echo Type 'G' to view the GNU General Public License (GPL) version 3
+    echo Type 'L' to view the GNU Lesser General Public License (LGPL) version 2.1
+    echo Type 'E' to view the Nokia Qt LGPL Exception version 1.1.
+    echo Type 'yes' to accept this license offer.
+    echo Type 'no' to decline this license offer.
+    echo .
+    set /p answer=Do you accept the terms of this license? 
+
+    if %answer%==no goto EOF
+    if %answer%==yes (
+	 echo license accepted > .licenseAccepted
+	 goto EOF
+    )
+    if %answer%==g more LICENSE.GPL3
+    if %answer%==G more LICENSE.GPL3
+    if %answer%==l more LICENSE.LGPL
+    if %answer%==L more LICENSE.LGPL
+    if %answer%==e more LGPL_EXCEPTION.txt
+    if %answer%==E more LGPL_EXCEPTION.txt
+goto HandleFree
+
+:Comm
+    echo .
+    echo License Agreement
+    echo .
+    echo Type '?' to view the Qt Solutions Commercial License.
+    echo Type 'yes' to accept this license offer.
+    echo Type 'no' to decline this license offer.
+    echo .
+    set /p answer=Do you accept the terms of this license? 
+
+    if %answer%==no goto EOF
+    if %answer%==yes (
+	 echo license accepted > .licenseAccepted
+	 copy %licenseFile% LICENSE
+	 del LICENSE.US
+	 del LICENSE.NO
+	 goto EOF
+    )
+    if %answer%==? more %licenseFile%
+goto Comm
+
+:PrintUsage
+echo Usage: configure.bat [-library]
+echo .
+echo -library: Build the component as a dynamic library (DLL). Default is to
+echo           include the component source directly in the application.
+echo           A DLL may be preferable for technical or licensing (LGPL) reasons.
+echo .
+goto EOF
+
+
+:EOF
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/classic.css
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/classic.css	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/classic.css	(revision 117)
@@ -0,0 +1,139 @@
+h3.fn,span.fn
+{
+  margin-left: 1cm;
+  text-indent: -1cm;
+}
+
+a:link
+{
+  color: #004faf;
+  text-decoration: none
+}
+
+a:visited
+{
+  color: #672967;
+  text-decoration: none
+}
+
+a.obsolete
+{
+  color: #661100;
+  text-decoration: none
+}
+
+a.compat
+{
+  color: #661100;
+  text-decoration: none
+}
+
+a.obsolete:visited
+{
+  color: #995500;
+  text-decoration: none
+}
+
+a.compat:visited
+{
+  color: #995500;
+  text-decoration: none
+}
+
+td.postheader
+{
+  font-family: sans-serif
+}
+
+tr.address
+{
+  font-family: sans-serif
+}
+
+body
+{
+  background: #ffffff;
+  color: black
+}
+
+table tr.odd {
+  background: #f0f0f0;
+  color: black;
+}
+
+table tr.even {
+  background: #e4e4e4;
+  color: black;
+}
+
+table.annotated th {
+  padding: 3px;
+  text-align: left
+}
+
+table.annotated td {
+  padding: 3px;
+}
+
+table tr pre
+{
+  padding-top: 0px;
+  padding-bottom: 0px;
+  padding-left: 0px;
+  padding-right: 0px;
+  border: none;
+  background: none
+}
+
+tr.qt-style
+{
+  background: #96E066;
+  color: black
+}
+
+body pre
+{
+  padding: 0.2em;
+  border: #e7e7e7 1px solid;
+  background: #f1f1f1;
+  color: black
+}
+
+table tr.qt-code pre
+{
+  padding: 0.2em;
+  border: #e7e7e7 1px solid;
+  background: #f1f1f1;
+  color: black
+}
+
+span.preprocessor, span.preprocessor a
+{
+  color: darkblue;
+}
+
+span.comment
+{
+  color: darkred;
+  font-style: italic
+}
+
+span.string,span.char
+{
+  color: darkgreen;
+}
+
+.title
+{
+    text-align: center
+}
+
+.subtitle
+{
+    font-size: 0.8em
+}
+
+.small-subtitle
+{
+    font-size: 0.65em
+}
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/index.html
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/index.html	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/index.html	(revision 117)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- qttoolbardialog-2.2_1-opensource/doc/index.qdoc -->
+<head>
+  <title>Toolbar Dialog</title>
+  <link href="classic.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" width="32"><img src="images/qt-logo.png" align="left" width="57" height="67" border="0" /></td>
+<td width="1">&nbsp;&nbsp;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a></td>
+</tr></table><h1 class="title">Toolbar Dialog<br /><span class="subtitle"></span>
+</h1>
+<a name="description"></a>
+<h2>Description</h2>
+<p>The Toolbar Dialog component provides customizing functionality for toolbars.</p>
+<a name="classes"></a>
+<h2>Classes</h2>
+<ul>
+<li><a href="qttoolbarmanager.html">QtToolBarManager</a></li>
+<li><a href="qttoolbardialog.html">QtToolBarDialog</a></li>
+</ul>
+<a name="tested-platforms"></a>
+<h2>Tested platforms</h2>
+<ul>
+<li>Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005</li>
+<li>Qt 4.4, 4.5 / Linux / gcc</li>
+<li>Qt 4.4, 4.5 / MacOS X 10.5 / gcc</li>
+</ul>
+<a name="screenshots"></a>
+<h2>Screenshots</h2>
+<p align="center"><img src="images/qttoolbardialog.png" /></p><p /><address><hr /><div align="center">
+<table width="100%" cellspacing="0" border="0"><tr class="address">
+<td width="30%" align="left">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
+<td width="40%" align="center"><a href="http://qt.nokia.com/doc/trademarks.html">Trademarks</a></td>
+<td width="30%" align="right"><div align="right">Qt Solutions</div></td>
+</tr></table></div></address></body>
+</html>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog-members.html
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog-members.html	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog-members.html	(revision 117)
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp -->
+<head>
+  <title>List of All Members for QtToolBarDialog</title>
+  <link href="classic.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" width="32"><img src="images/qt-logo.png" align="left" width="57" height="67" border="0" /></td>
+<td width="1">&nbsp;&nbsp;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a></td>
+</tr></table><h1 class="title">List of All Members for QtToolBarDialog</h1>
+<p>This is the complete list of members for <a href="qttoolbardialog.html">QtToolBarDialog</a>, including inherited members.</p>
+<p><table width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr><td width="45%" valign="top"><ul>
+<li><div class="fn"></div>enum <a href="http://qt.nokia.com/doc/4.5/qdialog.html#DialogCode-enum">DialogCode</a></li>
+<li><div class="fn"></div>enum <a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#PaintDeviceMetric-enum">PaintDeviceMetric</a></li>
+<li><div class="fn"></div>enum <a href="http://qt.nokia.com/doc/4.5/qwidget.html#RenderFlag-enum">RenderFlag</a></li>
+<li><div class="fn"></div>typedef <a href="http://qt.nokia.com/doc/4.5/qwidget.html#RenderFlags-typedef">RenderFlags</a></li>
+<li><div class="fn"></div><a href="qttoolbardialog.html#QtToolBarDialog">QtToolBarDialog</a> ( QWidget *, Qt::WFlags )</li>
+<li><div class="fn"></div><a href="qttoolbardialog.html#dtor.QtToolBarDialog">~QtToolBarDialog</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#accept">accept</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#acceptDrops-prop">acceptDrops</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#accepted">accepted</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#accessibleDescription-prop">accessibleDescription</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#accessibleName-prop">accessibleName</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#actionEvent">actionEvent</a> ( QActionEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#actions">actions</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#activateWindow">activateWindow</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#addAction">addAction</a> ( QAction * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#addActions">addActions</a> ( QList&lt;QAction *&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#adjustSize">adjustSize</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#autoFillBackground-prop">autoFillBackground</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#backgroundRole">backgroundRole</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#baseSize-prop">baseSize</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#blockSignals">blockSignals</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#changeEvent">changeEvent</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#childAt">childAt</a> ( int, int ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#childAt-4">childAt</a> ( const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#childEvent">childEvent</a> ( QChildEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#children">children</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#childrenRect-prop">childrenRect</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#childrenRegion-prop">childrenRegion</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#clearFocus">clearFocus</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#clearMask">clearMask</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#close">close</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#closeEvent">closeEvent</a> ( QCloseEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#connect">connect</a> ( const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#connect-2">connect</a> ( const QObject *, const char *, const char *, Qt::ConnectionType ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#connectNotify">connectNotify</a> ( const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#contentsRect">contentsRect</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#contextMenuEvent">contextMenuEvent</a> ( QContextMenuEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#contextMenuPolicy-prop">contextMenuPolicy</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#create">create</a> ( WId, bool, bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#cursor-prop">cursor</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#customContextMenuRequested">customContextMenuRequested</a> ( const QPoint &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#customEvent">customEvent</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#d_ptr-var">d_ptr</a> : </li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#deleteLater">deleteLater</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#depth">depth</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#destroy">destroy</a> ( bool, bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#destroyed">destroyed</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnect">disconnect</a> ( const QObject *, const char *, const QObject *, const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnect-2">disconnect</a> ( const char *, const QObject *, const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnect-3">disconnect</a> ( const QObject *, const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnectNotify">disconnectNotify</a> ( const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#done">done</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#dragEnterEvent">dragEnterEvent</a> ( QDragEnterEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#dragLeaveEvent">dragLeaveEvent</a> ( QDragLeaveEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#dragMoveEvent">dragMoveEvent</a> ( QDragMoveEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#dropEvent">dropEvent</a> ( QDropEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#dumpObjectInfo">dumpObjectInfo</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#dumpObjectTree">dumpObjectTree</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#dynamicPropertyNames">dynamicPropertyNames</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#effectiveWinId">effectiveWinId</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#ensurePolished">ensurePolished</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#enterEvent">enterEvent</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#event">event</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#eventFilter">eventFilter</a> ( QObject *, QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#exec">exec</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#find">find</a> ( WId )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#findChild">findChild</a> ( const QString &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#findChildren">findChildren</a> ( const QString &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#findChildren-2">findChildren</a> ( const QRegExp &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#finished">finished</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusInEvent">focusInEvent</a> ( QFocusEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusNextChild">focusNextChild</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusNextPrevChild">focusNextPrevChild</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusOutEvent">focusOutEvent</a> ( QFocusEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusPolicy-prop">focusPolicy</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusPreviousChild">focusPreviousChild</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusProxy">focusProxy</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusWidget">focusWidget</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#font-prop">font</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#fontInfo">fontInfo</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#fontMetrics">fontMetrics</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#foregroundRole">foregroundRole</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#frameGeometry-prop">frameGeometry</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#frameSize-prop">frameSize</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#geometry-prop">geometry</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#getContentsMargins">getContentsMargins</a> ( int *, int *, int *, int * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#getDC">getDC</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#grabKeyboard">grabKeyboard</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#grabMouse">grabMouse</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#grabMouse-2">grabMouse</a> ( const QCursor &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#grabShortcut">grabShortcut</a> ( const QKeySequence &amp;, Qt::ShortcutContext )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#graphicsProxyWidget">graphicsProxyWidget</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#hasEditFocus">hasEditFocus</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focus-prop">hasFocus</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mouseTracking-prop">hasMouseTracking</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#height-prop">height</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#heightForWidth">heightForWidth</a> ( int ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#heightMM">heightMM</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#hide">hide</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#hideEvent">hideEvent</a> ( QHideEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#inherits">inherits</a> ( const char * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#inputContext">inputContext</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#inputMethodEvent">inputMethodEvent</a> ( QInputMethodEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#inputMethodQuery">inputMethodQuery</a> ( Qt::InputMethodQuery ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#insertAction">insertAction</a> ( QAction *, QAction * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#insertActions">insertActions</a> ( QAction *, QList&lt;QAction *&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#installEventFilter">installEventFilter</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#isActiveWindow-prop">isActiveWindow</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#isAncestorOf">isAncestorOf</a> ( const QWidget * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#enabled-prop">isEnabled</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#isEnabledTo">isEnabledTo</a> ( QWidget * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#fullScreen-prop">isFullScreen</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#isHidden">isHidden</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximized-prop">isMaximized</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimized-prop">isMinimized</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#modal-prop">isModal</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#sizeGripEnabled-prop">isSizeGripEnabled</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#visible-prop">isVisible</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#isVisibleTo">isVisibleTo</a> ( QWidget * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#isWidgetType">isWidgetType</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#isWindow">isWindow</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowModified-prop">isWindowModified</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#keyPressEvent">keyPressEvent</a> ( QKeyEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#keyReleaseEvent">keyReleaseEvent</a> ( QKeyEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#keyboardGrabber">keyboardGrabber</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#killTimer">killTimer</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#layout">layout</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#layoutDirection-prop">layoutDirection</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#leaveEvent">leaveEvent</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#locale-prop">locale</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#logicalDpiX">logicalDpiX</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#logicalDpiY">logicalDpiY</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#lower">lower</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#macCGHandle">macCGHandle</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#macEvent">macEvent</a> ( EventHandlerCallRef, EventRef )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#macQDHandle">macQDHandle</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mapFrom">mapFrom</a> ( QWidget *, const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mapFromGlobal">mapFromGlobal</a> ( const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mapFromParent">mapFromParent</a> ( const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mapTo">mapTo</a> ( QWidget *, const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mapToGlobal">mapToGlobal</a> ( const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mapToParent">mapToParent</a> ( const QPoint &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mask">mask</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumHeight-prop">maximumHeight</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumSize-prop">maximumSize</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumWidth-prop">maximumWidth</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#metaObject">metaObject</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#metric">metric</a> ( PaintDeviceMetric ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumHeight-prop">minimumHeight</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumSize-prop">minimumSize</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumSizeHint-prop">minimumSizeHint</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumWidth-prop">minimumWidth</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mouseDoubleClickEvent">mouseDoubleClickEvent</a> ( QMouseEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mouseGrabber">mouseGrabber</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mouseMoveEvent">mouseMoveEvent</a> ( QMouseEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mousePressEvent">mousePressEvent</a> ( QMouseEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mouseReleaseEvent">mouseReleaseEvent</a> ( QMouseEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#pos-prop">move</a> ( const QPoint &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#pos-prop">move</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#moveEvent">moveEvent</a> ( QMoveEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#moveToThread">moveToThread</a> ( QThread * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#nativeParentWidget">nativeParentWidget</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#nextInFocusChain">nextInFocusChain</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#normalGeometry-prop">normalGeometry</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#numColors">numColors</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#objectName-prop">objectName</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#open">open</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#overrideWindowFlags">overrideWindowFlags</a> ( QFlags&lt;Qt::WindowType&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#paintEngine">paintEngine</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#paintEvent">paintEvent</a> ( QPaintEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#painters-var">painters</a> : </li>
+</ul></td><td valign="top"><ul>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#paintingActive">paintingActive</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#palette-prop">palette</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#parent">parent</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#parentWidget">parentWidget</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#physicalDpiX">physicalDpiX</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#physicalDpiY">physicalDpiY</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#pos-prop">pos</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#property">property</a> ( const char * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#qwsEvent">qwsEvent</a> ( QWSEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#raise">raise</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#receivers">receivers</a> ( const char * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#rect-prop">rect</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#reject">reject</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#rejected">rejected</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#releaseDC">releaseDC</a> ( HDC ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#releaseKeyboard">releaseKeyboard</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#releaseMouse">releaseMouse</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#releaseShortcut">releaseShortcut</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#removeAction">removeAction</a> ( QAction * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#removeEventFilter">removeEventFilter</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#render">render</a> ( QPaintDevice *, const QPoint &amp;, const QRegion &amp;, QFlags&lt;QWidget::RenderFlag&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#render-2">render</a> ( QPainter *, const QPoint &amp;, const QRegion &amp;, QFlags&lt;QWidget::RenderFlag&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#repaint">repaint</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#repaint-6">repaint</a> ( int, int, int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#repaint-7">repaint</a> ( const QRect &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#repaint-8">repaint</a> ( const QRegion &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#size-prop">resize</a> ( const QSize &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#size-prop">resize</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#resizeEvent">resizeEvent</a> ( QResizeEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#restoreGeometry">restoreGeometry</a> ( const QByteArray &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#result">result</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#saveGeometry">saveGeometry</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#scroll">scroll</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#scroll-2">scroll</a> ( int, int, const QRect &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#sender">sender</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#acceptDrops-prop">setAcceptDrops</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#accessibleDescription-prop">setAccessibleDescription</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#accessibleName-prop">setAccessibleName</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setAttribute">setAttribute</a> ( Qt::WidgetAttribute, bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#autoFillBackground-prop">setAutoFillBackground</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setBackgroundRole">setBackgroundRole</a> ( QPalette::ColorRole )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#baseSize-prop">setBaseSize</a> ( const QSize &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#baseSize-prop">setBaseSize</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setContentsMargins">setContentsMargins</a> ( int, int, int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#contextMenuPolicy-prop">setContextMenuPolicy</a> ( Qt::ContextMenuPolicy )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#cursor-prop">setCursor</a> ( const QCursor &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setDisabled">setDisabled</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setEditFocus">setEditFocus</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#enabled-prop">setEnabled</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFixedHeight">setFixedHeight</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFixedSize">setFixedSize</a> ( const QSize &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFixedSize-2">setFixedSize</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFixedWidth">setFixedWidth</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFocus">setFocus</a> ( Qt::FocusReason )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFocus-2">setFocus</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#focusPolicy-prop">setFocusPolicy</a> ( Qt::FocusPolicy )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setFocusProxy">setFocusProxy</a> ( QWidget * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#font-prop">setFont</a> ( const QFont &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setForegroundRole">setForegroundRole</a> ( QPalette::ColorRole )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#geometry-prop">setGeometry</a> ( const QRect &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#geometry-prop">setGeometry</a> ( int, int, int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setHidden">setHidden</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setInputContext">setInputContext</a> ( QInputContext * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setLayout">setLayout</a> ( QLayout * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#layoutDirection-prop">setLayoutDirection</a> ( Qt::LayoutDirection )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#locale-prop">setLocale</a> ( const QLocale &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setMask">setMask</a> ( const QBitmap &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setMask-2">setMask</a> ( const QRegion &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumHeight-prop">setMaximumHeight</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumSize-prop">setMaximumSize</a> ( const QSize &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumSize-prop">setMaximumSize</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#maximumWidth-prop">setMaximumWidth</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumHeight-prop">setMinimumHeight</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumSize-prop">setMinimumSize</a> ( const QSize &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumSize-prop">setMinimumSize</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#minimumWidth-prop">setMinimumWidth</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#modal-prop">setModal</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#mouseTracking-prop">setMouseTracking</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#objectName-prop">setObjectName</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#palette-prop">setPalette</a> ( const QPalette &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setParent">setParent</a> ( QWidget * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setParent-2">setParent</a> ( QWidget *, QFlags&lt;Qt::WindowType&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#setProperty">setProperty</a> ( const char *, const QVariant &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#setResult">setResult</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setShortcutAutoRepeat">setShortcutAutoRepeat</a> ( int, bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setShortcutEnabled">setShortcutEnabled</a> ( int, bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qdialog.html#sizeGripEnabled-prop">setSizeGripEnabled</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizeIncrement-prop">setSizeIncrement</a> ( const QSize &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizeIncrement-prop">setSizeIncrement</a> ( int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizePolicy-prop">setSizePolicy</a> ( QSizePolicy )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizePolicy-prop">setSizePolicy</a> ( QSizePolicy::Policy, QSizePolicy::Policy )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#statusTip-prop">setStatusTip</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setStyle">setStyle</a> ( QStyle * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#styleSheet-prop">setStyleSheet</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setTabOrder">setTabOrder</a> ( QWidget *, QWidget * )</li>
+<li><div class="fn"></div><a href="qttoolbardialog.html#setToolBarManager">setToolBarManager</a> ( QtToolBarManager * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#toolTip-prop">setToolTip</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#updatesEnabled-prop">setUpdatesEnabled</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#visible-prop">setVisible</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#whatsThis-prop">setWhatsThis</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowFilePath-prop">setWindowFilePath</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowFlags-prop">setWindowFlags</a> ( QFlags&lt;Qt::WindowType&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowIcon-prop">setWindowIcon</a> ( const QIcon &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowIconText-prop">setWindowIconText</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowModality-prop">setWindowModality</a> ( Qt::WindowModality )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowModified-prop">setWindowModified</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowOpacity-prop">setWindowOpacity</a> ( qreal )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setWindowRole">setWindowRole</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setWindowState">setWindowState</a> ( QFlags&lt;Qt::WindowState&gt; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#setWindowSurface">setWindowSurface</a> ( QWindowSurface * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowTitle-prop">setWindowTitle</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#show">show</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#showEvent">showEvent</a> ( QShowEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#showFullScreen">showFullScreen</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#showMaximized">showMaximized</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#showMinimized">showMinimized</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#showNormal">showNormal</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#signalsBlocked">signalsBlocked</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#size-prop">size</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizeHint-prop">sizeHint</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizeIncrement-prop">sizeIncrement</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#sizePolicy-prop">sizePolicy</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#stackUnder">stackUnder</a> ( QWidget * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#startTimer">startTimer</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#staticMetaObject-var">staticMetaObject</a> : </li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#staticQtMetaObject-var">staticQtMetaObject</a> : </li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#statusTip-prop">statusTip</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#style">style</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#styleSheet-prop">styleSheet</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#tabletEvent">tabletEvent</a> ( QTabletEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#testAttribute">testAttribute</a> ( Qt::WidgetAttribute ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#thread">thread</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#timerEvent">timerEvent</a> ( QTimerEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#toolTip-prop">toolTip</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#tr">tr</a> ( const char *, const char *, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#trUtf8">trUtf8</a> ( const char *, const char *, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#underMouse">underMouse</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#cursor-prop">unsetCursor</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#layoutDirection-prop">unsetLayoutDirection</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#locale-prop">unsetLocale</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#update">update</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#update-2">update</a> ( int, int, int, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#update-3">update</a> ( const QRect &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#update-4">update</a> ( const QRegion &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#updateGeometry">updateGeometry</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#updateMicroFocus">updateMicroFocus</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#updatesEnabled-prop">updatesEnabled</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#visibleRegion">visibleRegion</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#whatsThis-prop">whatsThis</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#wheelEvent">wheelEvent</a> ( QWheelEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#width-prop">width</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#widthMM">widthMM</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#winEvent">winEvent</a> ( MSG *, long * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#winId">winId</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#window">window</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowFilePath-prop">windowFilePath</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowFlags-prop">windowFlags</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowIcon-prop">windowIcon</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowIconText-prop">windowIconText</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowModality-prop">windowModality</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowOpacity-prop">windowOpacity</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowRole">windowRole</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowState">windowState</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowSurface">windowSurface</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowTitle-prop">windowTitle</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#windowType">windowType</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#x-prop">x</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#x11Event">x11Event</a> ( XEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#x11Info">x11Info</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#x11PictureHandle">x11PictureHandle</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qwidget.html#y-prop">y</a> () const</li>
+</ul>
+</td></tr>
+</table></p>
+<p /><address><hr /><div align="center">
+<table width="100%" cellspacing="0" border="0"><tr class="address">
+<td width="30%" align="left">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
+<td width="40%" align="center"><a href="http://qt.nokia.com/doc/trademarks.html">Trademarks</a></td>
+<td width="30%" align="right"><div align="right">Qt Solutions</div></td>
+</tr></table></div></address></body>
+</html>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.dcf
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.dcf	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.dcf	(revision 117)
@@ -0,0 +1,29 @@
+<!DOCTYPE DCF>
+<DCF ref="index.html" icon="qttoolbardialog.png" imagedir="../../gif" title="Qt Solutions: Toolbar Dialog Documentation">
+<section ref="classes.html" title="Classes">
+    <section ref="qttoolbardialog.html" title="QtToolBarDialog Class Reference">
+        <keyword ref="qttoolbardialog.html">QtToolBarDialog</keyword>
+        <keyword ref="qttoolbardialog.html#setToolBarManager">setToolBarManager</keyword>
+        <section ref="qttoolbardialog-members.html" title="List of all members"/>
+    </section>
+    <section ref="qttoolbarmanager.html" title="QtToolBarManager Class Reference">
+        <keyword ref="qttoolbarmanager.html">QtToolBarManager</keyword>
+        <keyword ref="qttoolbarmanager.html#addAction">addAction</keyword>
+        <keyword ref="qttoolbarmanager.html#addToolBar">addToolBar</keyword>
+        <keyword ref="qttoolbarmanager.html#mainWindow">mainWindow</keyword>
+        <keyword ref="qttoolbarmanager.html#removeAction">removeAction</keyword>
+        <keyword ref="qttoolbarmanager.html#removeToolBar">removeToolBar</keyword>
+        <keyword ref="qttoolbarmanager.html#restoreState">restoreState</keyword>
+        <keyword ref="qttoolbarmanager.html#saveState">saveState</keyword>
+        <keyword ref="qttoolbarmanager.html#setMainWindow">setMainWindow</keyword>
+        <keyword ref="qttoolbarmanager.html#toolBars">toolBars</keyword>
+        <section ref="qttoolbarmanager-members.html" title="List of all members"/>
+    </section>
+</section>
+<section ref="overviews.html" title="Overviews">
+    <section ref="index.html" title="Toolbar Dialog">
+        <keyword ref="index.html">Toolbar Dialog</keyword>
+    </section>
+</section>
+<section ref="examples.html" title="Tutorial &amp; Examples"/>
+</DCF>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.html
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.html	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.html	(revision 117)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp -->
+<head>
+  <title>QtToolBarDialog Class Reference</title>
+  <link href="classic.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" width="32"><img src="images/qt-logo.png" align="left" width="57" height="67" border="0" /></td>
+<td width="1">&nbsp;&nbsp;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a></td>
+</tr></table><h1 class="title">QtToolBarDialog Class Reference</h1>
+<p>The QtToolBarDialog class provides a dialog for customizing toolbars. <a href="#details">More...</a></p>
+<pre> #include &lt;QtToolBarDialog&gt;</pre><p>Inherits <a href="http://qt.nokia.com/doc/4.5/qdialog.html">QDialog</a>.</p>
+<ul>
+<li><a href="qttoolbardialog-members.html">List of all members, including inherited members</a></li>
+</ul>
+<a name="public-functions"></a>
+<h3>Public Functions</h3>
+<ul>
+<li><div class="fn"></div><b><a href="qttoolbardialog.html#QtToolBarDialog">QtToolBarDialog</a></b> ( QWidget * <i>parent</i> = 0, Qt::WFlags <i>flags</i> = 0 )</li>
+<li><div class="fn"></div><b><a href="qttoolbardialog.html#dtor.QtToolBarDialog">~QtToolBarDialog</a></b> ()</li>
+<li><div class="fn"></div>void <b><a href="qttoolbardialog.html#setToolBarManager">setToolBarManager</a></b> ( QtToolBarManager * <i>toolBarManager</i> )</li>
+</ul>
+<ul>
+<li><div class="fn"></div>5 public functions inherited from <a href="http://qt.nokia.com/doc/4.5/qdialog.html#public-functions">QDialog</a></li>
+<li><div class="fn"></div>207 public functions inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#public-functions">QWidget</a></li>
+<li><div class="fn"></div>12 public functions inherited from <a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#public-functions">QPaintDevice</a></li>
+<li><div class="fn"></div>29 public functions inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#public-functions">QObject</a></li>
+</ul>
+<h3>Additional Inherited Members</h3>
+<ul>
+<li><div class="fn"></div>2 properties inherited from <a href="http://qt.nokia.com/doc/4.5/qdialog.html#properties">QDialog</a></li>
+<li><div class="fn"></div>57 properties inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#properties">QWidget</a></li>
+<li><div class="fn"></div>1 property inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#properties">QObject</a></li>
+<li><div class="fn"></div>5 public slots inherited from <a href="http://qt.nokia.com/doc/4.5/qdialog.html#public-slots">QDialog</a></li>
+<li><div class="fn"></div>19 public slots inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#public-slots">QWidget</a></li>
+<li><div class="fn"></div>1 public slot inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#public-slots">QObject</a></li>
+<li><div class="fn"></div>3 signals inherited from <a href="http://qt.nokia.com/doc/4.5/qdialog.html#signals">QDialog</a></li>
+<li><div class="fn"></div>1 signal inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#signals">QWidget</a></li>
+<li><div class="fn"></div>1 signal inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#signals">QObject</a></li>
+<li><div class="fn"></div>1 public type inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#public-variables">QObject</a></li>
+<li><div class="fn"></div>4 static public members inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#static-public-members">QWidget</a></li>
+<li><div class="fn"></div>4 static public members inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#static-public-members">QObject</a></li>
+<li><div class="fn"></div>37 protected functions inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#protected-functions">QWidget</a></li>
+<li><div class="fn"></div>1 protected function inherited from <a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#protected-functions">QPaintDevice</a></li>
+<li><div class="fn"></div>7 protected functions inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#protected-functions">QObject</a></li>
+<li><div class="fn"></div>1 protected slot inherited from <a href="http://qt.nokia.com/doc/4.5/qwidget.html#protected-slots">QWidget</a></li>
+<li><div class="fn"></div>1 protected type inherited from <a href="http://qt.nokia.com/doc/4.5/qpaintdevice.html#protected-variables">QPaintDevice</a></li>
+<li><div class="fn"></div>2 protected variables inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#protected-variables">QObject</a></li>
+</ul>
+<a name="details"></a>
+<hr />
+<h2>Detailed Description</h2>
+<p>The QtToolBarDialog class provides a dialog for customizing toolbars.</p>
+<p>QtToolBarDialog allows the user to customize the toolbars for a given main window.</p>
+<p align="center"><img src="images/qttoolbardialog.png" /></p><p>The dialog lets the users add, rename and remove custom toolbars. Note that built-in toolbars are marked with a green color, and cannot be removed or renamed.</p>
+<p>The users can also add and remove actions from the toolbars. An action can be added to many toolbars, but a toolbar can only contain one instance of each action. Actions that contains a widget are marked with a blue color in the list of actions, and can only be added to one single toolbar.</p>
+<p>Finally, the users can add separators to the toolbars.</p>
+<p>The original toolbars can be restored by clicking the <b>Restore all</b> button. All custom toolbars will then be removed, and all built-in toolbars will be restored to their original state.</p>
+<p>The QtToolBarDialog class's functionality is controlled by an instance of the <a href="qttoolbarmanager.html">QtToolBarManager</a> class, and the main window is specified using the <a href="qttoolbarmanager.html#setMainWindow">QtToolBarManager::setMainWindow</a>() function.</p>
+<p>All you need to do to use QtToolBarDialog is to specify an <a href="qttoolbarmanager.html">QtToolBarManager</a> instance and call the <a href="http://qt.nokia.com/doc/4.5/qdialog.html#exec">QDialog::exec</a>() slot:</p>
+<pre> QtToolBarManager *toolBarManager;
+
+ void MyMainWindow::customize()
+     {
+         QtToolBarDialog dialog(this);
+         dialog.setToolBarManager(toolBarManager);
+         dialog.exec();
+     }</pre>
+<p>See also <a href="qttoolbarmanager.html">QtToolBarManager</a>.</p>
+<hr />
+<h2>Member Function Documentation</h2>
+<h3 class="fn"><a name="QtToolBarDialog"></a>QtToolBarDialog::QtToolBarDialog ( <a href="http://qt.nokia.com/doc/4.5/qwidget.html">QWidget</a> * <i>parent</i> = 0, <a href="http://qt.nokia.com/doc/4.5/qt.html#WFlags-typedef">Qt::WFlags</a> <i>flags</i> = 0 )</h3>
+<p>Creates a toolbar dialog with the given <i>parent</i> and the specifed window <i>flags</i>.</p>
+<h3 class="fn"><a name="dtor.QtToolBarDialog"></a>QtToolBarDialog::~QtToolBarDialog ()</h3>
+<p>Destroys the toolbar dialog.</p>
+<h3 class="fn"><a name="setToolBarManager"></a>void QtToolBarDialog::setToolBarManager ( <a href="qttoolbarmanager.html">QtToolBarManager</a> * <i>toolBarManager</i> )</h3>
+<p>Connects the toolbar dialog to the given <i>toolBarManager</i>. Then, when <a href="http://qt.nokia.com/doc/4.5/qdialog.html#exec">exec</a>() is called, the toolbar dialog will operate using the given <i>toolBarManager</i>.</p>
+<p /><address><hr /><div align="center">
+<table width="100%" cellspacing="0" border="0"><tr class="address">
+<td width="30%" align="left">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
+<td width="40%" align="center"><a href="http://qt.nokia.com/doc/trademarks.html">Trademarks</a></td>
+<td width="30%" align="right"><div align="right">Qt Solutions</div></td>
+</tr></table></div></address></body>
+</html>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.index
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.index	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.index	(revision 117)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QDOCINDEX>
+<INDEX url="" title="Qt Solutions: Toolbar Dialog Documentation" version="">
+    <namespace access="public" threadsafety="unspecified" status="commendable" name="" href="" location="" module="">
+        <class access="public" threadsafety="unspecified" status="commendable" name="QtToolBarManager" href="qttoolbarmanager.html" location="qttoolbardialog.h" bases="QObject" module="">
+            <function access="public" threadsafety="unspecified" status="commendable" name="QtToolBarManager" fullname="QtToolBarManager::QtToolBarManager" href="qttoolbarmanager.html#QtToolBarManager" location="qttoolbardialog.h" virtual="non" meta="constructor" const="false" static="false" overload="false" type="" signature="QtToolBarManager(QObject * parent)">
+                <parameter left="QObject *" right="" name="parent" default="0"/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="~QtToolBarManager" fullname="QtToolBarManager::~QtToolBarManager" href="qttoolbarmanager.html#dtor.QtToolBarManager" location="qttoolbardialog.h" virtual="non" meta="destructor" const="false" static="false" overload="false" type="" signature="~QtToolBarManager()"/>
+            <function access="public" threadsafety="unspecified" status="commendable" name="setMainWindow" fullname="QtToolBarManager::setMainWindow" href="qttoolbarmanager.html#setMainWindow" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="void" signature="setMainWindow(QMainWindow * mainWindow)">
+                <parameter left="QMainWindow *" right="" name="mainWindow" default=""/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="mainWindow" fullname="QtToolBarManager::mainWindow" href="qttoolbarmanager.html#mainWindow" location="qttoolbardialog.h" virtual="non" meta="plain" const="true" static="false" overload="false" type="QMainWindow *" signature="mainWindow() const"/>
+            <function access="public" threadsafety="unspecified" status="commendable" name="addAction" fullname="QtToolBarManager::addAction" href="qttoolbarmanager.html#addAction" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="void" signature="addAction(QAction * action, const QString &amp; category)">
+                <parameter left="QAction *" right="" name="action" default=""/>
+                <parameter left="const QString &amp;" right="" name="category" default=""/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="removeAction" fullname="QtToolBarManager::removeAction" href="qttoolbarmanager.html#removeAction" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="void" signature="removeAction(QAction * action)">
+                <parameter left="QAction *" right="" name="action" default=""/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="addToolBar" fullname="QtToolBarManager::addToolBar" href="qttoolbarmanager.html#addToolBar" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="void" signature="addToolBar(QToolBar * toolBar, const QString &amp; category)">
+                <parameter left="QToolBar *" right="" name="toolBar" default=""/>
+                <parameter left="const QString &amp;" right="" name="category" default=""/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="removeToolBar" fullname="QtToolBarManager::removeToolBar" href="qttoolbarmanager.html#removeToolBar" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="void" signature="removeToolBar(QToolBar * toolBar)">
+                <parameter left="QToolBar *" right="" name="toolBar" default=""/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="toolBars" fullname="QtToolBarManager::toolBars" href="qttoolbarmanager.html#toolBars" location="qttoolbardialog.h" virtual="non" meta="plain" const="true" static="false" overload="false" type="QList&lt;QToolBar *&gt;" signature="toolBars() const"/>
+            <function access="public" threadsafety="unspecified" status="commendable" name="saveState" fullname="QtToolBarManager::saveState" href="qttoolbarmanager.html#saveState" location="qttoolbardialog.h" virtual="non" meta="plain" const="true" static="false" overload="false" type="QByteArray" signature="saveState(int version) const">
+                <parameter left="int" right="" name="version" default="0"/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="restoreState" fullname="QtToolBarManager::restoreState" href="qttoolbarmanager.html#restoreState" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="bool" signature="restoreState(const QByteArray &amp; state, int version)">
+                <parameter left="const QByteArray &amp;" right="" name="state" default=""/>
+                <parameter left="int" right="" name="version" default="0"/>
+            </function>
+        </class>
+        <class access="public" threadsafety="unspecified" status="commendable" name="QtToolBarDialog" href="qttoolbardialog.html" location="qttoolbardialog.h" bases="QDialog" module="">
+            <function access="public" threadsafety="unspecified" status="commendable" name="QtToolBarDialog" fullname="QtToolBarDialog::QtToolBarDialog" href="qttoolbardialog.html#QtToolBarDialog" location="qttoolbardialog.h" virtual="non" meta="constructor" const="false" static="false" overload="false" type="" signature="QtToolBarDialog(QWidget * parent, Qt::WFlags flags)">
+                <parameter left="QWidget *" right="" name="parent" default="0"/>
+                <parameter left="Qt::WFlags" right="" name="flags" default="0"/>
+            </function>
+            <function access="public" threadsafety="unspecified" status="commendable" name="~QtToolBarDialog" fullname="QtToolBarDialog::~QtToolBarDialog" href="qttoolbardialog.html#dtor.QtToolBarDialog" location="qttoolbardialog.h" virtual="non" meta="destructor" const="false" static="false" overload="false" type="" signature="~QtToolBarDialog()"/>
+            <function access="public" threadsafety="unspecified" status="commendable" name="setToolBarManager" fullname="QtToolBarDialog::setToolBarManager" href="qttoolbardialog.html#setToolBarManager" location="qttoolbardialog.h" virtual="non" meta="plain" const="false" static="false" overload="false" type="void" signature="setToolBarManager(QtToolBarManager * toolBarManager)">
+                <parameter left="QtToolBarManager *" right="" name="toolBarManager" default=""/>
+            </function>
+        </class>
+        <page access="public" status="commendable" name="index.html" href="index.html" subtype="page" title="Toolbar Dialog" fulltitle="Toolbar Dialog" subtitle="" location="index.qdoc">
+            <contents name="description" title="Description" level="1"/>
+            <contents name="classes" title="Classes" level="1"/>
+            <contents name="tested-platforms" title="Tested platforms" level="1"/>
+            <contents name="screenshots" title="Screenshots" level="1"/>
+        </page>
+    </namespace>
+</INDEX>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.qhp
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.qhp	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.qhp	(revision 117)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<QtHelpProject version="1.0">
+    <namespace>com.nokia.qtsolutions.qttoolbardialog_2.2</namespace>
+    <virtualFolder>qdoc</virtualFolder>
+    <customFilter name="Qt Solutions: Toolbar Dialog">
+        <filterAttribute>qt</filterAttribute>
+        <filterAttribute>qttoolbardialog</filterAttribute>
+        <filterAttribute>solutions</filterAttribute>
+    </customFilter>
+    <filterSection>
+        <filterAttribute>qt</filterAttribute>
+        <filterAttribute>qttoolbardialog</filterAttribute>
+        <filterAttribute>solutions</filterAttribute>
+        <toc>
+            <section ref="index.html" title="Qt Solutions: Toolbar Dialog Documentation">
+                <section ref="index.html" title="Toolbar Dialog"/>
+            </section>
+        </toc>
+        <keywords>
+            <keyword name="QtToolBarDialog" id="QtToolBarDialog" ref="qttoolbardialog.html"/>
+            <keyword name="setToolBarManager" id="QtToolBarDialog::setToolBarManager" ref="qttoolbardialog.html#setToolBarManager"/>
+            <keyword name="~QtToolBarDialog" id="QtToolBarDialog::~QtToolBarDialog" ref="qttoolbardialog.html#dtor.QtToolBarDialog"/>
+            <keyword name="QtToolBarManager" id="QtToolBarManager" ref="qttoolbarmanager.html"/>
+            <keyword name="addAction" id="QtToolBarManager::addAction" ref="qttoolbarmanager.html#addAction"/>
+            <keyword name="addToolBar" id="QtToolBarManager::addToolBar" ref="qttoolbarmanager.html#addToolBar"/>
+            <keyword name="mainWindow" id="QtToolBarManager::mainWindow" ref="qttoolbarmanager.html#mainWindow"/>
+            <keyword name="removeAction" id="QtToolBarManager::removeAction" ref="qttoolbarmanager.html#removeAction"/>
+            <keyword name="removeToolBar" id="QtToolBarManager::removeToolBar" ref="qttoolbarmanager.html#removeToolBar"/>
+            <keyword name="restoreState" id="QtToolBarManager::restoreState" ref="qttoolbarmanager.html#restoreState"/>
+            <keyword name="saveState" id="QtToolBarManager::saveState" ref="qttoolbarmanager.html#saveState"/>
+            <keyword name="setMainWindow" id="QtToolBarManager::setMainWindow" ref="qttoolbarmanager.html#setMainWindow"/>
+            <keyword name="toolBars" id="QtToolBarManager::toolBars" ref="qttoolbarmanager.html#toolBars"/>
+            <keyword name="~QtToolBarManager" id="QtToolBarManager::~QtToolBarManager" ref="qttoolbarmanager.html#dtor.QtToolBarManager"/>
+            <keyword name="Toolbar Dialog" id="Toolbar Dialog" ref="index.html"/>
+        </keywords>
+        <files>
+            <file>index.html</file>
+            <file>images/qttoolbardialog.png</file>
+            <file>qttoolbarmanager.html</file>
+            <file>qttoolbardialog.html</file>
+            <file>classic.css</file>
+            <file>images/qt-logo.png</file>
+            <file>images/qttoolbardialog.png</file>
+        </files>
+    </filterSection>
+</QtHelpProject>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager-members.html
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager-members.html	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager-members.html	(revision 117)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp -->
+<head>
+  <title>List of All Members for QtToolBarManager</title>
+  <link href="classic.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" width="32"><img src="images/qt-logo.png" align="left" width="57" height="67" border="0" /></td>
+<td width="1">&nbsp;&nbsp;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a></td>
+</tr></table><h1 class="title">List of All Members for QtToolBarManager</h1>
+<p>This is the complete list of members for <a href="qttoolbarmanager.html">QtToolBarManager</a>, including inherited members.</p>
+<p><table width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr><td width="45%" valign="top"><ul>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#QtToolBarManager">QtToolBarManager</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#dtor.QtToolBarManager">~QtToolBarManager</a> ()</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#addAction">addAction</a> ( QAction *, const QString &amp; )</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#addToolBar">addToolBar</a> ( QToolBar *, const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#blockSignals">blockSignals</a> ( bool )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#childEvent">childEvent</a> ( QChildEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#children">children</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#connect">connect</a> ( const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#connect-2">connect</a> ( const QObject *, const char *, const char *, Qt::ConnectionType ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#connectNotify">connectNotify</a> ( const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#customEvent">customEvent</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#d_ptr-var">d_ptr</a> : </li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#deleteLater">deleteLater</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#destroyed">destroyed</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnect">disconnect</a> ( const QObject *, const char *, const QObject *, const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnect-2">disconnect</a> ( const char *, const QObject *, const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnect-3">disconnect</a> ( const QObject *, const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#disconnectNotify">disconnectNotify</a> ( const char * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#dumpObjectInfo">dumpObjectInfo</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#dumpObjectTree">dumpObjectTree</a> ()</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#dynamicPropertyNames">dynamicPropertyNames</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#event">event</a> ( QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#eventFilter">eventFilter</a> ( QObject *, QEvent * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#findChild">findChild</a> ( const QString &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#findChildren">findChildren</a> ( const QString &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#findChildren-2">findChildren</a> ( const QRegExp &amp; ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#inherits">inherits</a> ( const char * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#installEventFilter">installEventFilter</a> ( QObject * )</li>
+</ul></td><td valign="top"><ul>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#isWidgetType">isWidgetType</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#killTimer">killTimer</a> ( int )</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#mainWindow">mainWindow</a> () const : QMainWindow *</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#metaObject">metaObject</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#moveToThread">moveToThread</a> ( QThread * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#objectName-prop">objectName</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#parent">parent</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#property">property</a> ( const char * ) const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#receivers">receivers</a> ( const char * ) const</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#removeAction">removeAction</a> ( QAction * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#removeEventFilter">removeEventFilter</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#removeToolBar">removeToolBar</a> ( QToolBar * )</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#restoreState">restoreState</a> ( const QByteArray &amp;, int ) : bool</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#saveState">saveState</a> ( int ) const : QByteArray</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#sender">sender</a> () const</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#setMainWindow">setMainWindow</a> ( QMainWindow * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#objectName-prop">setObjectName</a> ( const QString &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#setParent">setParent</a> ( QObject * )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#setProperty">setProperty</a> ( const char *, const QVariant &amp; )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#signalsBlocked">signalsBlocked</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#startTimer">startTimer</a> ( int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#staticMetaObject-var">staticMetaObject</a> : </li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#staticQtMetaObject-var">staticQtMetaObject</a> : </li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#thread">thread</a> () const</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#timerEvent">timerEvent</a> ( QTimerEvent * )</li>
+<li><div class="fn"></div><a href="qttoolbarmanager.html#toolBars">toolBars</a> () const : QList&lt;QToolBar *&gt;</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#tr">tr</a> ( const char *, const char *, int )</li>
+<li><div class="fn"></div><a href="http://qt.nokia.com/doc/4.5/qobject.html#trUtf8">trUtf8</a> ( const char *, const char *, int )</li>
+</ul>
+</td></tr>
+</table></p>
+<p /><address><hr /><div align="center">
+<table width="100%" cellspacing="0" border="0"><tr class="address">
+<td width="30%" align="left">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
+<td width="40%" align="center"><a href="http://qt.nokia.com/doc/trademarks.html">Trademarks</a></td>
+<td width="30%" align="right"><div align="right">Qt Solutions</div></td>
+</tr></table></div></address></body>
+</html>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager.html
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager.html	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager.html	(revision 117)
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<!-- qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp -->
+<head>
+  <title>QtToolBarManager Class Reference</title>
+  <link href="classic.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" width="32"><img src="images/qt-logo.png" align="left" width="57" height="67" border="0" /></td>
+<td width="1">&nbsp;&nbsp;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a></td>
+</tr></table><h1 class="title">QtToolBarManager Class Reference</h1>
+<p>The QtToolBarManager class provides toolbar management for main windows. <a href="#details">More...</a></p>
+<pre> #include &lt;QtToolBarManager&gt;</pre><p>Inherits <a href="http://qt.nokia.com/doc/4.5/qobject.html">QObject</a>.</p>
+<ul>
+<li><a href="qttoolbarmanager-members.html">List of all members, including inherited members</a></li>
+</ul>
+<a name="public-functions"></a>
+<h3>Public Functions</h3>
+<ul>
+<li><div class="fn"></div><b><a href="qttoolbarmanager.html#QtToolBarManager">QtToolBarManager</a></b> ( QObject * <i>parent</i> = 0 )</li>
+<li><div class="fn"></div><b><a href="qttoolbarmanager.html#dtor.QtToolBarManager">~QtToolBarManager</a></b> ()</li>
+<li><div class="fn"></div>void <b><a href="qttoolbarmanager.html#addAction">addAction</a></b> ( QAction * <i>action</i>, const QString &amp; <i>category</i> )</li>
+<li><div class="fn"></div>void <b><a href="qttoolbarmanager.html#addToolBar">addToolBar</a></b> ( QToolBar * <i>toolBar</i>, const QString &amp; <i>category</i> )</li>
+<li><div class="fn"></div>QMainWindow * <b><a href="qttoolbarmanager.html#mainWindow">mainWindow</a></b> () const</li>
+<li><div class="fn"></div>void <b><a href="qttoolbarmanager.html#removeAction">removeAction</a></b> ( QAction * <i>action</i> )</li>
+<li><div class="fn"></div>void <b><a href="qttoolbarmanager.html#removeToolBar">removeToolBar</a></b> ( QToolBar * <i>toolBar</i> )</li>
+<li><div class="fn"></div>bool <b><a href="qttoolbarmanager.html#restoreState">restoreState</a></b> ( const QByteArray &amp; <i>state</i>, int <i>version</i> = 0 )</li>
+<li><div class="fn"></div>QByteArray <b><a href="qttoolbarmanager.html#saveState">saveState</a></b> ( int <i>version</i> = 0 ) const</li>
+<li><div class="fn"></div>void <b><a href="qttoolbarmanager.html#setMainWindow">setMainWindow</a></b> ( QMainWindow * <i>mainWindow</i> )</li>
+<li><div class="fn"></div>QList&lt;QToolBar *&gt; <b><a href="qttoolbarmanager.html#toolBars">toolBars</a></b> () const</li>
+</ul>
+<ul>
+<li><div class="fn"></div>29 public functions inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#public-functions">QObject</a></li>
+</ul>
+<h3>Additional Inherited Members</h3>
+<ul>
+<li><div class="fn"></div>1 property inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#properties">QObject</a></li>
+<li><div class="fn"></div>1 public slot inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#public-slots">QObject</a></li>
+<li><div class="fn"></div>1 signal inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#signals">QObject</a></li>
+<li><div class="fn"></div>1 public type inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#public-variables">QObject</a></li>
+<li><div class="fn"></div>4 static public members inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#static-public-members">QObject</a></li>
+<li><div class="fn"></div>7 protected functions inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#protected-functions">QObject</a></li>
+<li><div class="fn"></div>2 protected variables inherited from <a href="http://qt.nokia.com/doc/4.5/qobject.html#protected-variables">QObject</a></li>
+</ul>
+<a name="details"></a>
+<hr />
+<h2>Detailed Description</h2>
+<p>The QtToolBarManager class provides toolbar management for main windows.</p>
+<p>The QtToolBarManager is typically used with a <a href="qttoolbardialog.html">QtToolBarDialog</a> which allows the user to customize the toolbars for a given main window. The <a href="qttoolbardialog.html">QtToolBarDialog</a> class's functionality is controlled by an instance of the QtToolBarManager class, and the main window is specified using the QtToolBarManager class's <a href="qttoolbarmanager.html#setMainWindow">setMainWindow</a>() function.</p>
+<p>The currently specified main window can be retrieved using the <a href="qttoolbarmanager.html#mainWindow">mainWindow</a>() function.</p>
+<p>The toolbar manager holds lists of the given main window's actions and toolbars, and can add actions and toolbars to these lists using the <a href="qttoolbarmanager.html#addAction">addAction</a>() and <a href="qttoolbarmanager.html#addToolBar">addToolBar</a>() functions respectively. The actions can in addition be categorized acccording to the user's preferences. The toolbar manager can also remove custom actions and toolbars using the <a href="qttoolbarmanager.html#removeAction">removeAction</a>() and <a href="qttoolbarmanager.html#removeToolBar">removeToolBar</a>() functions.</p>
+<p>Finally, the QtToolBarManager is able to save the customized state of its toolbars using the <a href="qttoolbarmanager.html#saveState">saveState</a>() function as well as restore the toolbars' saved state using <a href="qttoolbarmanager.html#restoreState">restoreState</a>() function.</p>
+<p>See also <a href="qttoolbardialog.html">QtToolBarDialog</a>.</p>
+<hr />
+<h2>Member Function Documentation</h2>
+<h3 class="fn"><a name="QtToolBarManager"></a>QtToolBarManager::QtToolBarManager ( <a href="http://qt.nokia.com/doc/4.5/qobject.html">QObject</a> * <i>parent</i> = 0 )</h3>
+<p>Creates a toolbar manager with the given <i>parent</i>.</p>
+<h3 class="fn"><a name="dtor.QtToolBarManager"></a>QtToolBarManager::~QtToolBarManager ()</h3>
+<p>Destroys the toolbar manager.</p>
+<h3 class="fn"><a name="addAction"></a>void QtToolBarManager::addAction ( <a href="http://qt.nokia.com/doc/4.5/qaction.html">QAction</a> * <i>action</i>, const <a href="http://qt.nokia.com/doc/4.5/qstring.html">QString</a> &amp; <i>category</i> )</h3>
+<p>Adds the given <i>action</i> to the given <i>category</i> in the manager's list of actions. If the <i>category</i> doesn't exist it is created. Only non separator actions can be added. If the action is already added to the list, the function doesn't do anything.</p>
+<p>See also <a href="qttoolbarmanager.html#removeAction">removeAction</a>().</p>
+<h3 class="fn"><a name="addToolBar"></a>void QtToolBarManager::addToolBar ( <a href="http://qt.nokia.com/doc/4.5/qtoolbar.html">QToolBar</a> * <i>toolBar</i>, const <a href="http://qt.nokia.com/doc/4.5/qstring.html">QString</a> &amp; <i>category</i> )</h3>
+<p>Adds the given <i>toolBar</i> to the manager's toolbar list.</p>
+<p>All the <i>toolBar</i>'s actions are automatically added to the given <i>category</i> in the manager's list of actions if they're not already there. The manager remembers which toolbar the actions belonged to, so, when the <i>toolBar</i> is removed, its actions will be removed as well.</p>
+<p>Custom toolbars are created with the main window returned by the <a href="qttoolbarmanager.html#mainWindow">mainWindow</a>() function, as its parent.</p>
+<p>See also <a href="qttoolbarmanager.html#removeToolBar">removeToolBar</a>().</p>
+<h3 class="fn"><a name="mainWindow"></a><a href="http://qt.nokia.com/doc/4.5/qmainwindow.html">QMainWindow</a> * QtToolBarManager::mainWindow () const</h3>
+<p>Returns the main window associated this toolbar manager.</p>
+<p>See also <a href="qttoolbarmanager.html#setMainWindow">setMainWindow</a>().</p>
+<h3 class="fn"><a name="removeAction"></a>void QtToolBarManager::removeAction ( <a href="http://qt.nokia.com/doc/4.5/qaction.html">QAction</a> * <i>action</i> )</h3>
+<p>Removes the specified <i>action</i> from the manager's list of actions. The action is also removed from all the registered toolbars. If the specified <i>action</i> is the only action in its category, that category is removed as well.</p>
+<p>See also <a href="qttoolbarmanager.html#addAction">addAction</a>().</p>
+<h3 class="fn"><a name="removeToolBar"></a>void QtToolBarManager::removeToolBar ( <a href="http://qt.nokia.com/doc/4.5/qtoolbar.html">QToolBar</a> * <i>toolBar</i> )</h3>
+<p>Removes the specified <i>toolBar</i> from the manager's list. All the actions that existed in the specified <i>toolBar</i> when it was added are removed as well.</p>
+<p>See also <a href="qttoolbarmanager.html#addToolBar">addToolBar</a>().</p>
+<h3 class="fn"><a name="restoreState"></a>bool QtToolBarManager::restoreState ( const <a href="http://qt.nokia.com/doc/4.5/qbytearray.html">QByteArray</a> &amp; <i>state</i>, int <i>version</i> = 0 )</h3>
+<p>Restores the saved state of the toolbar manager's toolbars. The <i>version</i> number is compared with the version number of the stored <i>state</i>.</p>
+<p>Returns true if the version numbers are matching and the toolbar manager's state is restored; otherwise the toolbar manager's state is left unchanged and the function returns false.</p>
+<p>Note that the state of the toolbar manager's toolbars should be restored before restoring the state of the main window's toolbars and dockwidgets using the <a href="http://qt.nokia.com/doc/4.5/qmainwindow.html#restoreState">QMainWindow::restoreState</a>() function. In that way the restoreState() function can create the custom toolbars before the <a href="http://qt.nokia.com/doc/4.5/qmainwindow.html#restoreState">QMainWindow::restoreState</a>() function restores the custom toolbars' positions.</p>
+<p>See also <a href="qttoolbarmanager.html#saveState">saveState</a>().</p>
+<h3 class="fn"><a name="saveState"></a><a href="http://qt.nokia.com/doc/4.5/qbytearray.html">QByteArray</a> QtToolBarManager::saveState ( int <i>version</i> = 0 ) const</h3>
+<p>Saves the state of the toolbar manager's toolbars. The <i>version</i> number is stored as part of the data.</p>
+<p>Identifies all the <a href="http://qt.nokia.com/doc/4.5/qtoolbar.html">QToolBar</a> and <a href="http://qt.nokia.com/doc/4.5/qaction.html">QAction</a> objects by their object name property. Ensure that this property is unique for each <a href="http://qt.nokia.com/doc/4.5/qtoolbar.html">QToolBar</a> and <a href="http://qt.nokia.com/doc/4.5/qaction.html">QAction</a> that you add using the <a href="qttoolbarmanager.html">QtToolBarManager</a>.</p>
+<p>Returns an identifier for the state which can be passed along with the version number to the <a href="qttoolbarmanager.html#restoreState">restoreState</a>() function to restore the saved state.</p>
+<p>See also <a href="qttoolbarmanager.html#restoreState">restoreState</a>().</p>
+<h3 class="fn"><a name="setMainWindow"></a>void QtToolBarManager::setMainWindow ( <a href="http://qt.nokia.com/doc/4.5/qmainwindow.html">QMainWindow</a> * <i>mainWindow</i> )</h3>
+<p>Sets the main window upon which the toolbar manager operates, to be the given <i>mainWindow</i>.</p>
+<p>See also <a href="qttoolbarmanager.html#mainWindow">mainWindow</a>().</p>
+<h3 class="fn"><a name="toolBars"></a><a href="http://qt.nokia.com/doc/4.5/qlist.html">QList</a>&lt;<a href="http://qt.nokia.com/doc/4.5/qtoolbar.html">QToolBar</a> *&gt; QtToolBarManager::toolBars () const</h3>
+<p>Returns the manager's toolbar list.</p>
+<p /><address><hr /><div align="center">
+<table width="100%" cellspacing="0" border="0"><tr class="address">
+<td width="30%" align="left">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
+<td width="40%" align="center"><a href="http://qt.nokia.com/doc/trademarks.html">Trademarks</a></td>
+<td width="30%" align="right"><div align="right">Qt Solutions</div></td>
+</tr></table></div></address></body>
+</html>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/index.qdoc
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/index.qdoc	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/doc/index.qdoc	(revision 117)
@@ -0,0 +1,37 @@
+/*!
+	\page index.html
+	\title Toolbar Dialog
+
+    	\section1 Description
+	
+            The Toolbar Dialog component provides customizing functionality for toolbars.
+	
+
+	
+	
+
+    	
+        \section1 Classes
+	    \list
+	 \i  QtToolBarManager \i  QtToolBarDialog\endlist
+	
+    
+
+    	
+
+    	
+    		\section1 Tested platforms
+		\list
+		\i Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005
+		    \i Qt 4.4, 4.5 / Linux / gcc
+		    \i Qt 4.4, 4.5 / MacOS X 10.5 / gcc
+		    \endlist
+
+    	
+
+	
+		\section1 Screenshots
+
+    		\img qttoolbardialog.png
+		    
+	*/
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/examples.pro
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/examples.pro	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/examples.pro	(revision 117)
@@ -0,0 +1,7 @@
+######################################################################
+# Automatically generated by qmake (2.00a) Wed Jun 15 15:53:34 2005
+######################################################################
+
+TEMPLATE = subdirs
+SUBDIRS = simple
+
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/main.cpp
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/main.cpp	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/main.cpp	(revision 117)
@@ -0,0 +1,59 @@
+/****************************************************************************
+** 
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+** 
+** This file is part of a Qt Solutions component.
+**
+** Commercial Usage  
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Solutions Commercial License Agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and Nokia.
+** 
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** 
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+** 
+** GNU General Public License Usage 
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+** 
+** Please note Third Party Software included with Qt Solutions may impose
+** additional restrictions and it is the user's responsibility to ensure
+** that they have met the licensing requirements of the GPL, LGPL, or Qt
+** Solutions Commercial license and the relevant license of the Third
+** Party Software they are using.
+** 
+** If you are unsure which license is appropriate for your use, please
+** contact Nokia at qt-info@nokia.com.
+** 
+****************************************************************************/
+
+#include <QtGui/QApplication>
+
+#include "mainwindow.h"
+
+int main(int argc, char *argv[])
+{
+    Q_INIT_RESOURCE(simple);
+
+    QApplication app(argc, argv);
+    MainWindow mainWin;
+    mainWin.show();
+    return app.exec();
+}
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.cpp
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.cpp	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.cpp	(revision 117)
@@ -0,0 +1,455 @@
+/****************************************************************************
+** 
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+** 
+** This file is part of a Qt Solutions component.
+**
+** Commercial Usage  
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Solutions Commercial License Agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and Nokia.
+** 
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** 
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+** 
+** GNU General Public License Usage 
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+** 
+** Please note Third Party Software included with Qt Solutions may impose
+** additional restrictions and it is the user's responsibility to ensure
+** that they have met the licensing requirements of the GPL, LGPL, or Qt
+** Solutions Commercial license and the relevant license of the Third
+** Party Software they are using.
+** 
+** If you are unsure which license is appropriate for your use, please
+** contact Nokia at qt-info@nokia.com.
+** 
+****************************************************************************/
+
+#include <QtGui>
+
+#include "mainwindow.h"
+#include "qttoolbardialog.h"
+
+MainWindow::MainWindow()
+{
+    textEdit = new QTextEdit;
+    setCentralWidget(textEdit);
+
+    findWidget = new QLineEdit;
+    findWidget->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+    connect(findWidget, SIGNAL(returnPressed()), this, SLOT(find()));
+
+    createActions();
+    createMenus();
+    createToolBars();
+    createStatusBar();
+    createToolBarManager();
+
+    readSettings();
+
+    connect(textEdit->document(), SIGNAL(contentsChanged()),
+            this, SLOT(documentWasModified()));
+
+    setCurrentFile("");
+}
+
+void MainWindow::closeEvent(QCloseEvent *event)
+{
+    if (maybeSave()) {
+        writeSettings();
+        event->accept();
+    } else {
+        event->ignore();
+    }
+}
+
+void MainWindow::newFile()
+{
+    if (maybeSave()) {
+        textEdit->clear();
+        setCurrentFile("");
+    }
+}
+
+void MainWindow::open()
+{
+    if (maybeSave()) {
+        QString fileName = QFileDialog::getOpenFileName(this);
+        if (!fileName.isEmpty())
+            loadFile(fileName);
+    }
+}
+
+bool MainWindow::save()
+{
+    if (curFile.isEmpty()) {
+        return saveAs();
+    } else {
+        return saveFile(curFile);
+    }
+}
+
+bool MainWindow::saveAs()
+{
+    QString fileName = QFileDialog::getSaveFileName(this);
+    if (fileName.isEmpty())
+        return false;
+
+    return saveFile(fileName);
+}
+
+void MainWindow::configureToolBars()
+{
+    QtToolBarDialog dlg(this);
+    dlg.setToolBarManager(toolBarManager);
+    dlg.exec();
+}
+
+void MainWindow::saveToolBars()
+{
+    QString fileName = QFileDialog::getSaveFileName(this,
+            tr("Save Toolbars' State"), QString(), "*.state");
+    if (fileName.isEmpty())
+        return;
+    QFileInfo fi(fileName);
+    if (fi.suffix() != QString("state"))
+        fileName += QString(".state");
+
+    QFile file(fileName);
+    if (file.open(QFile::WriteOnly)) {
+        QByteArray array = toolBarManager->saveState();
+        file.write(array);
+        file.close();
+    }
+}
+
+void MainWindow::restoreToolBars()
+{
+    QString fileName = QFileDialog::getOpenFileName(this,
+            tr("Restore Toolbars' State"), QString(), "*.state");
+    if (fileName.isEmpty())
+        return;
+
+    QFile file(fileName);
+    if (file.open(QFile::ReadOnly)) {
+        QByteArray array = file.readAll();
+        file.close();
+        toolBarManager->restoreState(array);
+    }
+}
+
+void MainWindow::about()
+{
+   QMessageBox::about(this, tr("About Application"),
+            tr("The <b>Application</b> example demonstrates how to "
+               "write modern GUI applications using Qt, with a menu bar, "
+               "toolbars, and a status bar."));
+}
+
+void MainWindow::documentWasModified()
+{
+    setWindowModified(textEdit->document()->isModified());
+}
+
+void MainWindow::find()
+{
+    QString text = findWidget->text();
+    if (!textEdit->find(text)) {
+        statusBar()->showMessage(tr("Search hit bottom, continuing from top"), 2000);
+        QTextCursor oldCursor = textEdit->textCursor();
+        int vpos = textEdit->verticalScrollBar()->value();
+        int hpos = textEdit->horizontalScrollBar()->value();
+        QTextCursor newCursor = oldCursor;
+        newCursor.setPosition(0);
+        textEdit->setTextCursor(newCursor);
+        if (!textEdit->find(text)) {
+            statusBar()->showMessage(tr("Pattern '%1' not found").arg(text), 2000);
+            textEdit->setTextCursor(oldCursor);
+            textEdit->verticalScrollBar()->setValue(vpos);
+            textEdit->horizontalScrollBar()->setValue(hpos);
+        }
+    }
+}
+
+void MainWindow::createActions()
+{
+    findAct = 0;
+
+    newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
+    newAct->setObjectName(QString::fromUtf8("newAct"));
+    newAct->setShortcut(tr("Ctrl+N"));
+    newAct->setStatusTip(tr("Create a new file"));
+    connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
+
+    openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
+    openAct->setObjectName(QString::fromUtf8("openAct"));
+    openAct->setShortcut(tr("Ctrl+O"));
+    openAct->setStatusTip(tr("Open an existing file"));
+    connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
+
+    saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this);
+    saveAct->setObjectName(QString::fromUtf8("saveAct"));
+    saveAct->setShortcut(tr("Ctrl+S"));
+    saveAct->setStatusTip(tr("Save the document to disk"));
+    connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));
+
+    saveAsAct = new QAction(tr("Save &As..."), this);
+    saveAsAct->setObjectName(QString::fromUtf8("saveAsAct"));
+    saveAsAct->setStatusTip(tr("Save the document under a new name"));
+    connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
+
+    exitAct = new QAction(tr("E&xit"), this);
+    exitAct->setObjectName(QString::fromUtf8("exitAct"));
+    exitAct->setShortcut(tr("Ctrl+Q"));
+    exitAct->setStatusTip(tr("Exit the application"));
+    connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
+
+    cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this);
+    cutAct->setObjectName(QString::fromUtf8("cutAct"));
+    cutAct->setShortcut(tr("Ctrl+X"));
+    cutAct->setStatusTip(tr("Cut the current selection's contents to the "
+                            "clipboard"));
+    connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut()));
+
+    copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this);
+    copyAct->setObjectName(QString::fromUtf8("copyAct"));
+    copyAct->setShortcut(tr("Ctrl+C"));
+    copyAct->setStatusTip(tr("Copy the current selection's contents to the "
+                             "clipboard"));
+    connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy()));
+
+    pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this);
+    pasteAct->setObjectName(QString::fromUtf8("pasteAct"));
+    pasteAct->setShortcut(tr("Ctrl+V"));
+    pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "
+                              "selection"));
+    connect(pasteAct, SIGNAL(triggered()), textEdit, SLOT(paste()));
+
+    configureToolBarsAct = new QAction(tr("&Configure Toolbars..."), this);
+    configureToolBarsAct->setObjectName(QString::fromUtf8("configureToolBarsAct"));
+    configureToolBarsAct->setStatusTip(tr("Configure toolbars"));
+    QObject::connect(configureToolBarsAct, SIGNAL(triggered()),
+                this, SLOT(configureToolBars()));
+
+    saveToolBarsAct = new QAction(tr("&Save Toolbars..."), this);
+    saveToolBarsAct->setObjectName(QString::fromUtf8("saveToolBarsAct"));
+    saveToolBarsAct->setStatusTip(tr("Save toolbars' state"));
+    QObject::connect(saveToolBarsAct, SIGNAL(triggered()),
+                this, SLOT(saveToolBars()));
+
+    restoreToolBarsAct = new QAction(tr("&Restore Toolbars..."), this);
+    restoreToolBarsAct->setObjectName(QString::fromUtf8("restoreToolBarsAct"));
+    restoreToolBarsAct->setStatusTip(tr("Restore toolbars' state"));
+    QObject::connect(restoreToolBarsAct, SIGNAL(triggered()),
+                this, SLOT(restoreToolBars()));
+
+    aboutAct = new QAction(tr("&About"), this);
+    aboutAct->setObjectName(QString::fromUtf8("aboutAct"));
+    aboutAct->setStatusTip(tr("Show the application's About box"));
+    connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
+
+    aboutQtAct = new QAction(tr("About &Qt"), this);
+    aboutQtAct->setObjectName(QString::fromUtf8("aboutQtAct"));
+    aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
+    connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
+
+    cutAct->setEnabled(false);
+    copyAct->setEnabled(false);
+    connect(textEdit, SIGNAL(copyAvailable(bool)),
+            cutAct, SLOT(setEnabled(bool)));
+    connect(textEdit, SIGNAL(copyAvailable(bool)),
+            copyAct, SLOT(setEnabled(bool)));
+}
+
+void MainWindow::createMenus()
+{
+    fileMenu = menuBar()->addMenu(tr("&File"));
+    fileMenu->addAction(newAct);
+    fileMenu->addAction(openAct);
+    fileMenu->addAction(saveAct);
+    fileMenu->addAction(saveAsAct);
+    fileMenu->addSeparator();
+    fileMenu->addAction(exitAct);
+
+    editMenu = menuBar()->addMenu(tr("&Edit"));
+    editMenu->addAction(cutAct);
+    editMenu->addAction(copyAct);
+    editMenu->addAction(pasteAct);
+
+    settingsMenu = menuBar()->addMenu(tr("&Settings"));
+    settingsMenu->addAction(configureToolBarsAct);
+    settingsMenu->addAction(saveToolBarsAct);
+    settingsMenu->addAction(restoreToolBarsAct);
+
+    menuBar()->addSeparator();
+
+    helpMenu = menuBar()->addMenu(tr("&Help"));
+    helpMenu->addAction(aboutAct);
+    helpMenu->addAction(aboutQtAct);
+}
+
+void MainWindow::createToolBars()
+{
+    fileToolBar = addToolBar(tr("File"));
+    fileToolBar->setObjectName(QString::fromUtf8("fileToolBar"));
+    fileToolBar->addAction(newAct);
+    fileToolBar->addAction(openAct);
+    fileToolBar->addAction(saveAct);
+
+    editToolBar = addToolBar(tr("Edit"));
+    editToolBar->setObjectName(QString::fromUtf8("editToolBar"));
+    editToolBar->addAction(cutAct);
+    editToolBar->addAction(copyAct);
+    editToolBar->addAction(pasteAct);
+    editToolBar->addSeparator();
+
+    findAct = editToolBar->addWidget(findWidget);
+    findAct->setText(tr("Find"));
+    findAct->setObjectName(QString::fromUtf8("findAct"));
+}
+
+void MainWindow::createStatusBar()
+{
+    statusBar()->showMessage(tr("Ready"));
+}
+
+void MainWindow::createToolBarManager()
+{
+    toolBarManager = new QtToolBarManager(this);
+    toolBarManager->setMainWindow(this);
+
+    QString fileStr = tr("File");
+    QString editStr = tr("Edit");
+    QString settingsStr = tr("Settings");
+    QString helpStr = tr("Help");
+
+    toolBarManager->addToolBar(fileToolBar, fileStr);
+    toolBarManager->addToolBar(editToolBar, editStr);
+
+    toolBarManager->addAction(saveAsAct, fileStr);
+    toolBarManager->addAction(exitAct, fileStr);
+    toolBarManager->addAction(configureToolBarsAct, settingsStr);
+    toolBarManager->addAction(saveToolBarsAct, settingsStr);
+    toolBarManager->addAction(restoreToolBarsAct, settingsStr);
+    toolBarManager->addAction(aboutAct, helpStr);
+    toolBarManager->addAction(aboutQtAct, helpStr);
+}
+
+void MainWindow::readSettings()
+{
+    QSettings settings("Qt Software", "Application Example");
+    QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
+    QSize size = settings.value("size", QSize(400, 400)).toSize();
+    QByteArray toolBarsState = settings.value("toolBarsState").toByteArray();
+    QByteArray docksState = settings.value("docksState").toByteArray();
+    resize(size);
+    move(pos);
+    toolBarManager->restoreState(toolBarsState);
+    restoreState(docksState);
+}
+
+void MainWindow::writeSettings()
+{
+    QSettings settings("Qt Software", "Application Example");
+    settings.setValue("pos", pos());
+    settings.setValue("size", size());
+    settings.setValue("toolBarsState", toolBarManager->saveState());
+    settings.setValue("docksState", saveState());
+}
+
+bool MainWindow::maybeSave()
+{
+    if (textEdit->document()->isModified()) {
+        int ret = QMessageBox::warning(this, tr("Application"),
+                     tr("The document has been modified.\n"
+                        "Do you want to save your changes?"),
+                     QMessageBox::Yes | QMessageBox::Default,
+                     QMessageBox::No,
+                     QMessageBox::Cancel | QMessageBox::Escape);
+        if (ret == QMessageBox::Yes)
+            return save();
+        else if (ret == QMessageBox::Cancel)
+            return false;
+    }
+    return true;
+}
+
+void MainWindow::loadFile(const QString &fileName)
+{
+    QFile file(fileName);
+    if (!file.open(QFile::ReadOnly | QFile::Text)) {
+        QMessageBox::warning(this, tr("Application"),
+                             tr("Cannot read file %1:\n%2.")
+                             .arg(fileName)
+                             .arg(file.errorString()));
+        return;
+    }
+
+    QTextStream in(&file);
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    textEdit->setPlainText(in.readAll());
+    QApplication::restoreOverrideCursor();
+
+    setCurrentFile(fileName);
+    statusBar()->showMessage(tr("File loaded"), 2000);
+}
+
+bool MainWindow::saveFile(const QString &fileName)
+{
+    QFile file(fileName);
+    if (!file.open(QFile::WriteOnly | QFile::Text)) {
+        QMessageBox::warning(this, tr("Application"),
+                             tr("Cannot write file %1:\n%2.")
+                             .arg(fileName)
+                             .arg(file.errorString()));
+        return false;
+    }
+
+    QTextStream out(&file);
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    out << textEdit->toPlainText();
+    QApplication::restoreOverrideCursor();
+
+    setCurrentFile(fileName);
+    statusBar()->showMessage(tr("File saved"), 2000);
+    return true;
+}
+
+void MainWindow::setCurrentFile(const QString &fileName)
+{
+    curFile = fileName;
+    textEdit->document()->setModified(false);
+    setWindowModified(false);
+
+    QString shownName;
+    if (curFile.isEmpty())
+        shownName = "untitled.txt";
+    else
+        shownName = strippedName(curFile);
+
+    setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(tr("Application")));
+}
+
+QString MainWindow::strippedName(const QString &fullFileName)
+{
+    return QFileInfo(fullFileName).fileName();
+}
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.h
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.h	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.h	(revision 117)
@@ -0,0 +1,122 @@
+/****************************************************************************
+** 
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+** 
+** This file is part of a Qt Solutions component.
+**
+** Commercial Usage  
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Solutions Commercial License Agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and Nokia.
+** 
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** 
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+** 
+** GNU General Public License Usage 
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+** 
+** Please note Third Party Software included with Qt Solutions may impose
+** additional restrictions and it is the user's responsibility to ensure
+** that they have met the licensing requirements of the GPL, LGPL, or Qt
+** Solutions Commercial license and the relevant license of the Third
+** Party Software they are using.
+** 
+** If you are unsure which license is appropriate for your use, please
+** contact Nokia at qt-info@nokia.com.
+** 
+****************************************************************************/
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QtGui/QMainWindow>
+
+class QAction;
+class QMenu;
+class QTextEdit;
+class QLineEdit;
+class QtToolBarManager;
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+public:
+    MainWindow();
+
+protected:
+    void closeEvent(QCloseEvent *event);
+
+private slots:
+    void newFile();
+    void open();
+    bool save();
+    bool saveAs();
+    void configureToolBars();
+    void saveToolBars();
+    void restoreToolBars();
+    void about();
+    void documentWasModified();
+    void find();
+
+private:
+    void createActions();
+    void createMenus();
+    void createToolBars();
+    void createStatusBar();
+    void createToolBarManager();
+    void readSettings();
+    void writeSettings();
+    bool maybeSave();
+    void loadFile(const QString &fileName);
+    bool saveFile(const QString &fileName);
+    void setCurrentFile(const QString &fileName);
+    QString strippedName(const QString &fullFileName);
+
+    QTextEdit *textEdit;
+    QString curFile;
+
+    QLineEdit *findWidget;
+
+    QMenu *fileMenu;
+    QMenu *editMenu;
+    QMenu *settingsMenu;
+    QMenu *helpMenu;
+    QToolBar *fileToolBar;
+    QToolBar *editToolBar;
+    QAction *newAct;
+    QAction *openAct;
+    QAction *saveAct;
+    QAction *saveAsAct;
+    QAction *exitAct;
+    QAction *cutAct;
+    QAction *copyAct;
+    QAction *pasteAct;
+    QAction *findAct;
+    QAction *configureToolBarsAct;
+    QAction *saveToolBarsAct;
+    QAction *restoreToolBarsAct;
+    QAction *aboutAct;
+    QAction *aboutQtAct;
+
+    QtToolBarManager *toolBarManager;
+};
+
+#endif
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.pro
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.pro	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.pro	(revision 117)
@@ -0,0 +1,11 @@
+TEMPLATE = app
+DEPENDPATH += .
+INCLUDEPATH += .
+
+include(../../src/qttoolbardialog.pri)
+# Input
+SOURCES += main.cpp \
+           mainwindow.cpp
+HEADERS += mainwindow.h
+RESOURCES += simple.qrc
+
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.qrc
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.qrc	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.qrc	(revision 117)
@@ -0,0 +1,10 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>images/copy.png</file>
+    <file>images/cut.png</file>
+    <file>images/new.png</file>
+    <file>images/open.png</file>
+    <file>images/paste.png</file>
+    <file>images/save.png</file>
+</qresource>
+</RCC>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/qttoolbardialog.pro
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/qttoolbardialog.pro	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/qttoolbardialog.pro	(revision 117)
@@ -0,0 +1,5 @@
+TEMPLATE=subdirs
+CONFIG += ordered
+include(common.pri)
+qttoolbardialog-uselib:SUBDIRS=buildlib
+SUBDIRS+=examples
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarDialog
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarDialog	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarDialog	(revision 117)
@@ -0,0 +1,1 @@
+#include "qttoolbardialog.h"
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarManager
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarManager	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarManager	(revision 117)
@@ -0,0 +1,1 @@
+#include "qttoolbardialog.h"
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp	(revision 117)
@@ -0,0 +1,1892 @@
+/****************************************************************************
+** 
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+** 
+** This file is part of a Qt Solutions component.
+**
+** Commercial Usage  
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Solutions Commercial License Agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and Nokia.
+** 
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** 
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+** 
+** GNU General Public License Usage 
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+** 
+** Please note Third Party Software included with Qt Solutions may impose
+** additional restrictions and it is the user's responsibility to ensure
+** that they have met the licensing requirements of the GPL, LGPL, or Qt
+** Solutions Commercial license and the relevant license of the Third
+** Party Software they are using.
+** 
+** If you are unsure which license is appropriate for your use, please
+** contact Nokia at qt-info@nokia.com.
+** 
+****************************************************************************/
+
+#include "qttoolbardialog.h"
+#include "ui_qttoolbardialog.h"
+#include <QtCore/QSet>
+#include <QtGui/QAction>
+#include <QtGui/QToolBar>
+#include <QtGui/QMainWindow>
+#include <QtGui/QShowEvent>
+#include <QtGui/QHideEvent>
+#include <QtGui/QHeaderView>
+
+class QtFullToolBarManagerPrivate
+{
+    class QtFullToolBarManager *q_ptr;
+    Q_DECLARE_PUBLIC(QtFullToolBarManager)
+
+public:
+
+    QToolBar *toolBarWidgetAction(QAction *action) const;
+    void removeWidgetActions(const QMap<QToolBar *, QList<QAction *> > &actions);
+
+    enum {
+        VersionMarker = 0xff,
+        ToolBarMarker = 0xfe,
+        CustomToolBarMarker = 0xfd,
+    };
+
+    void saveState(QDataStream &stream) const;
+    bool restoreState(QDataStream &stream) const;
+    QToolBar *findDefaultToolBar(const QString &objectName) const;
+    QAction *findAction(const QString &actionName) const;
+
+    QToolBar *toolBarByName(const QString &toolBarName) const;
+
+    QtFullToolBarManagerPrivate();
+
+    QMap<QString, QList<QAction *> > categoryToActions;
+    QMap<QAction *, QString>         actionToCategory;
+
+    QSet<QAction *> allActions;
+    QMap<QAction *, QToolBar *> widgetActions;
+    QSet<QAction *> regularActions;
+    QMap<QAction *, QList<QToolBar *> > actionToToolBars;
+
+    QMap<QToolBar *, QList<QAction *> > toolBars;
+    QMap<QToolBar *, QList<QAction *> > toolBarsWithSeparators;
+    QMap<QToolBar *, QList<QAction *> > defaultToolBars;
+    QList<QToolBar *> customToolBars;
+
+    QMainWindow *theMainWindow;
+};
+
+
+class QtFullToolBarManager : public QObject
+{
+    Q_OBJECT
+public:
+    QtFullToolBarManager(QObject *parent);
+    ~QtFullToolBarManager();
+
+    void setMainWindow(QMainWindow *mainWindow);
+    QMainWindow *mainWindow() const;
+
+    void addCategory(const QString &category);
+    bool hasCategory(const QString &category) const;
+    QStringList categories() const;
+    QList<QAction *> categoryActions(const QString &category) const;
+    QString actionCategory(QAction *action) const;
+
+    // only non-separator
+    void addAction(QAction *action, const QString &category);
+
+    void removeAction(QAction *action);
+
+    QSet<QAction *> actions() const;
+    bool isWidgetAction(QAction *action) const;
+
+    /*
+    Adds (registers) toolBar. Adds (registers) actions that already exists in toolBar.
+    Remembers toolbar and its actions as a default.
+    */
+    void addDefaultToolBar(QToolBar *toolBar, const QString &category);
+
+    void removeDefaultToolBar(QToolBar *toolBar);
+    // NULL on action list means separator.
+    QMap<QToolBar *, QList<QAction *> > defaultToolBars() const;
+    bool isDefaultToolBar(QToolBar *toolBar) const;
+
+    QToolBar *createToolBar(const QString &toolBarName);
+    void deleteToolBar(QToolBar *toolBar); // only those which were created, not added
+
+    QList<QAction *> actions(QToolBar *toolBar) const;
+
+    void setToolBars(const QMap<QToolBar *, QList<QAction *> > &actions);
+    void setToolBar(QToolBar *toolBar, const QList<QAction *> &actions);
+
+    QMap<QToolBar *, QList<QAction *> > toolBarsActions() const;
+    QByteArray saveState(int version = 0) const;
+    bool restoreState(const QByteArray &state, int version = 0);
+
+public slots:
+
+    void resetToolBar(QToolBar *toolBar);
+    void resetAllToolBars();
+
+signals:
+    void toolBarCreated(QToolBar *toolBar);
+    void toolBarRemoved(QToolBar *toolBar);
+
+    /*
+    If QToolBarWidgetAction was in another tool bar and is inserted into
+    this toolBar, toolBarChanged is first emited for other toolbar - without
+    that action. (Another approach may be that user first must call setToolBar
+    without that action for old tool bar)
+    */
+    void toolBarChanged(QToolBar *toolBar, const QList<QAction *> &actions);
+
+private:
+    QtFullToolBarManagerPrivate *d_ptr;
+    Q_DECLARE_PRIVATE(QtFullToolBarManager)
+    Q_DISABLE_COPY(QtFullToolBarManager)
+};
+
+
+QtFullToolBarManagerPrivate::QtFullToolBarManagerPrivate()
+    : theMainWindow(0)
+{
+}
+
+QToolBar *QtFullToolBarManagerPrivate::toolBarWidgetAction(QAction *action) const
+{
+    if (widgetActions.contains(action))
+        return widgetActions.value(action);
+    return 0;
+}
+
+void QtFullToolBarManagerPrivate::removeWidgetActions(const QMap<QToolBar *, QList<QAction *> >
+            &actions)
+{
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator itToolBar = actions.constBegin();
+    while (itToolBar != actions.constEnd()) {
+        QToolBar *toolBar = itToolBar.key();
+        QList<QAction *> newActions = toolBars.value(toolBar);
+        QList<QAction *> newActionsWithSeparators = toolBarsWithSeparators.value(toolBar);
+
+        QList<QAction *> removedActions;
+        QList<QAction *> actionList = itToolBar.value();
+        QListIterator<QAction *> itAction(actionList);
+        while (itAction.hasNext()) {
+            QAction *action = itAction.next();
+            if (newActions.contains(action) && toolBarWidgetAction(action) == toolBar) {
+                newActions.removeAll(action);
+                newActionsWithSeparators.removeAll(action);
+                removedActions.append(action);
+            }
+        }
+
+        //emit q_ptr->toolBarChanged(toolBar, newActions);
+
+        toolBars.insert(toolBar, newActions);
+        toolBarsWithSeparators.insert(toolBar, newActionsWithSeparators);
+        QListIterator<QAction *> itRemovedAction(removedActions);
+        while (itRemovedAction.hasNext()) {
+            QAction *oldAction = itRemovedAction.next();
+            widgetActions.insert(oldAction, 0);
+            actionToToolBars[oldAction].removeAll(toolBar);
+        }
+
+        itToolBar++;
+    }
+}
+
+void QtFullToolBarManagerPrivate::saveState(QDataStream &stream) const
+{
+    stream << (uchar) ToolBarMarker;
+    stream << defaultToolBars.size();
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator itToolBar =
+                defaultToolBars.constBegin();
+    while (itToolBar != defaultToolBars.constEnd()) {
+        QToolBar *tb = itToolBar.key();
+        if (tb->objectName().isEmpty()) {
+            qWarning("QtToolBarManager::saveState(): 'objectName' not set for QToolBar "
+                "%p '%s', using 'windowTitle' instead",
+            tb, tb->windowTitle().toLocal8Bit().constData());
+            stream << tb->windowTitle();
+        } else {
+            stream << tb->objectName();
+        }
+
+        stream << toolBars[tb].size();
+        QListIterator<QAction *> itAction(toolBars[tb]);
+        while (itAction.hasNext()) {
+            QAction *action = itAction.next();
+
+            if (action) {
+                if (action->objectName().isEmpty()) {
+                    qWarning("QtToolBarManager::saveState(): 'objectName' not set for QAction "
+                                "%p '%s', using 'text' instead",
+                            action, action->text().toLocal8Bit().constData());
+                    stream << action->text();
+                } else {
+                    stream << action->objectName();
+                }
+            } else {
+                stream << QString();
+            }
+        }
+        itToolBar++;
+    }
+
+
+    stream << (uchar) CustomToolBarMarker;
+    stream << toolBars.size() - defaultToolBars.size();
+    itToolBar = toolBars.constBegin();
+    while (itToolBar != toolBars.constEnd()) {
+        QToolBar *tb = itToolBar.key();
+        if (!defaultToolBars.contains(tb)) {
+            stream << tb->objectName();
+            stream << tb->windowTitle();
+
+            stream << toolBars[tb].size();
+            QListIterator<QAction *> itAction(toolBars[tb]);
+            while (itAction.hasNext()) {
+                QAction *action = itAction.next();
+
+                if (action) {
+                    if (action->objectName().isEmpty()) {
+                        qWarning("QtToolBarManager::saveState(): 'objectName' not set for QAction "
+                                    "%p '%s', using 'text' instead",
+                                action, action->text().toLocal8Bit().constData());
+                        stream << action->text();
+                    } else {
+                        stream << action->objectName();
+                    }
+                } else {
+                    stream << QString();
+                }
+            }
+        }
+        itToolBar++;
+    }
+}
+
+bool QtFullToolBarManagerPrivate::restoreState(QDataStream &stream) const
+{
+    uchar tmarker;
+    stream >> tmarker;
+    if (tmarker != ToolBarMarker)
+        return false;
+
+    int toolBars;
+    stream >> toolBars;
+    for (int i = 0; i < toolBars; i++) {
+        QString objectName;
+        stream >> objectName;
+        int actionCount;
+        stream >> actionCount;
+        QList<QAction *> actions;
+        for (int j = 0; j < actionCount; j++) {
+            QString actionName;
+            stream >> actionName;
+
+            if (actionName.isEmpty())
+                actions.append(0);
+            else {
+                QAction *action = findAction(actionName);
+                if (action)
+                    actions.append(action);
+            }
+        }
+
+        QToolBar *toolBar = findDefaultToolBar(objectName);
+        if (toolBar)
+            q_ptr->setToolBar(toolBar, actions);
+    }
+
+
+
+    uchar ctmarker;
+    stream >> ctmarker;
+    if (ctmarker != CustomToolBarMarker)
+        return false;
+
+    QList<QToolBar *> oldCustomToolBars = customToolBars;
+
+    stream >> toolBars;
+    for (int i = 0; i < toolBars; i++) {
+        QString objectName;
+        QString toolBarName;
+        int actionCount;
+        stream >> objectName;
+        stream >> toolBarName;
+        stream >> actionCount;
+        QList<QAction *> actions;
+        for (int j = 0; j < actionCount; j++) {
+            QString actionName;
+            stream >> actionName;
+
+            if (actionName.isEmpty())
+                actions.append(0);
+            else {
+                QAction *action = findAction(actionName);
+                if (action)
+                    actions.append(action);
+            }
+        }
+
+        QToolBar *toolBar = toolBarByName(objectName);
+        if (toolBar) {
+            toolBar->setWindowTitle(toolBarName);
+            oldCustomToolBars.removeAll(toolBar);
+        }
+        else
+            toolBar = q_ptr->createToolBar(toolBarName);
+        if (toolBar) {
+            toolBar->setObjectName(objectName);
+            q_ptr->setToolBar(toolBar, actions);
+        }
+    }
+    QListIterator<QToolBar *> itToolBar(oldCustomToolBars);
+    while (itToolBar.hasNext())
+        q_ptr->deleteToolBar(itToolBar.next());
+    return true;
+}
+
+QToolBar *QtFullToolBarManagerPrivate::findDefaultToolBar(const QString &objectName) const
+{
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator itToolBar =
+                defaultToolBars.constBegin();
+    while (itToolBar != defaultToolBars.constEnd()) {
+        QToolBar *tb = itToolBar.key();
+        if (tb->objectName() == objectName)
+            return tb;
+
+        itToolBar++;
+    }
+
+    qWarning("QtToolBarManager::restoreState(): cannot find a QToolBar named "
+        "'%s', trying to match using 'windowTitle' instead.",
+        objectName.toLocal8Bit().constData());
+
+    itToolBar = defaultToolBars.constBegin();
+    while (itToolBar != defaultToolBars.constEnd()) {
+        QToolBar *tb = itToolBar.key();
+        if (tb->windowTitle() == objectName)
+            return tb;
+
+        itToolBar++;
+    }
+    qWarning("QtToolBarManager::restoreState(): cannot find a QToolBar with "
+        "matching 'windowTitle' (looking for '%s').",
+        objectName.toLocal8Bit().constData());
+
+    return 0;
+}
+
+QAction *QtFullToolBarManagerPrivate::findAction(const QString &actionName) const
+{
+    QSetIterator<QAction *> itAction(allActions);
+    while (itAction.hasNext()) {
+        QAction *action = itAction.next();
+
+        if (action->objectName() == actionName)
+            return action;
+    }
+    qWarning("QtToolBarManager::restoreState(): cannot find a QAction named "
+        "'%s', trying to match using 'text' instead.",
+        actionName.toLocal8Bit().constData());
+
+    itAction.toFront();
+    while (itAction.hasNext()) {
+        QAction *action = itAction.next();
+
+        if (action->text() == actionName)
+            return action;
+    }
+    qWarning("QtToolBarManager::restoreState(): cannot find a QAction with "
+        "matching 'text' (looking for '%s').",
+        actionName.toLocal8Bit().constData());
+
+    return 0;
+}
+
+QToolBar *QtFullToolBarManagerPrivate::toolBarByName(const QString &toolBarName) const
+{
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator itToolBar = toolBars.constBegin();
+    while (itToolBar != toolBars.constEnd()) {
+        QToolBar *toolBar = itToolBar.key();
+        if (toolBar->objectName() == toolBarName)
+            return toolBar;
+
+        itToolBar++;
+    }
+    return 0;
+}
+
+//////////////////////////////
+
+QtFullToolBarManager::QtFullToolBarManager(QObject *parent)
+    : QObject(parent)
+{
+    d_ptr = new QtFullToolBarManagerPrivate;
+    d_ptr->q_ptr = this;
+}
+
+QtFullToolBarManager::~QtFullToolBarManager()
+{
+    delete d_ptr;
+}
+
+void QtFullToolBarManager::setMainWindow(QMainWindow *mainWindow)
+{
+    d_ptr->theMainWindow = mainWindow;
+}
+
+QMainWindow *QtFullToolBarManager::mainWindow() const
+{
+    return d_ptr->theMainWindow;
+}
+
+void QtFullToolBarManager::addCategory(const QString &category)
+{
+    d_ptr->categoryToActions[category] = QList<QAction *>();
+}
+
+bool QtFullToolBarManager::hasCategory(const QString &category) const
+{
+    return d_ptr->categoryToActions.contains(category);
+}
+
+QStringList QtFullToolBarManager::categories() const
+{
+    return d_ptr->categoryToActions.keys();
+}
+
+QList<QAction *> QtFullToolBarManager::categoryActions(const QString &category) const
+{
+    QMap<QString, QList<QAction *> >::ConstIterator it =
+                d_ptr->categoryToActions.find(category);
+    if (it != d_ptr->categoryToActions.constEnd())
+        return it.value();
+    return QList<QAction *>();
+}
+
+QString QtFullToolBarManager::actionCategory(QAction *action) const
+{
+    QMap<QAction *, QString>::ConstIterator it = d_ptr->actionToCategory.find(action);
+    if (it != d_ptr->actionToCategory.constEnd())
+        return it.value();
+    return QString();
+}
+
+void QtFullToolBarManager::addAction(QAction *action, const QString &category)
+{
+    if (!action)
+        return;
+//    if (!d_ptr->categoryToActions.contains(category))
+//        return;
+    if (action->isSeparator())
+        return;
+    if (d_ptr->allActions.contains(action))
+        return;
+    if (QLatin1String(action->metaObject()->className()) ==
+                QLatin1String("QToolBarWidgetAction"))
+        d_ptr->widgetActions.insert(action, 0);
+    else
+        d_ptr->regularActions.insert(action);
+    d_ptr->allActions.insert(action);
+    d_ptr->categoryToActions[category].append(action);
+    d_ptr->actionToCategory[action] = category;
+}
+
+void QtFullToolBarManager::removeAction(QAction *action)
+{
+    if (!d_ptr->allActions.contains(action))
+        return;
+
+    QList<QToolBar *> toolBars = d_ptr->actionToToolBars[action];
+    QListIterator<QToolBar *> itToolBar(toolBars);
+    while (itToolBar.hasNext()) {
+        QToolBar *toolBar = itToolBar.next();
+
+        d_ptr->toolBars[toolBar].removeAll(action);
+        d_ptr->toolBarsWithSeparators[toolBar].removeAll(action);
+
+        toolBar->removeAction(action);
+    }
+
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator itDefault =
+            d_ptr->defaultToolBars.constBegin();
+    while (itDefault != d_ptr->defaultToolBars.constEnd()) {
+        if (itDefault.value().contains(action))
+            d_ptr->defaultToolBars[itDefault.key()].removeAll(action);
+
+        itDefault++;
+    }
+
+    d_ptr->allActions.remove(action);
+    d_ptr->widgetActions.remove(action);
+    d_ptr->regularActions.remove(action);
+    d_ptr->actionToToolBars.remove(action);
+
+    QString category = d_ptr->actionToCategory.value(action);
+    d_ptr->actionToCategory.remove(action);
+    d_ptr->categoryToActions[category].removeAll(action);
+
+    if (d_ptr->categoryToActions[category].isEmpty())
+        d_ptr->categoryToActions.remove(category);
+}
+
+QSet<QAction *> QtFullToolBarManager::actions() const
+{
+    return d_ptr->allActions;
+}
+
+bool QtFullToolBarManager::isWidgetAction(QAction *action) const
+{
+    if (d_ptr->widgetActions.contains(action))
+        return true;
+    return false;
+}
+
+void QtFullToolBarManager::addDefaultToolBar(QToolBar *toolBar, const QString &category)
+{
+    if (!toolBar)
+        return;
+    if (d_ptr->toolBars.contains(toolBar))
+        return;
+//    if (!d_ptr->categoryToActions.contains(category))
+//        return;
+    // could be also checked if toolBar belongs to mainwindow
+
+    QList<QAction *> newActionsWithSeparators;
+    QList<QAction *> newActions;
+    QList<QAction *> actions = toolBar->actions();
+    QListIterator<QAction *> itAction(actions);
+    while (itAction.hasNext()) {
+        QAction *action = itAction.next();
+        addAction(action, category);
+        if (d_ptr->widgetActions.contains(action))
+            d_ptr->widgetActions.insert(action, toolBar);
+        newActionsWithSeparators.append(action);
+        if (action->isSeparator())
+            action = 0;
+        else
+            d_ptr->actionToToolBars[action].append(toolBar);
+        newActions.append(action);
+    }
+    d_ptr->defaultToolBars.insert(toolBar, newActions);
+    //Below could be done by call setToolBar() if we want signal emission here.
+    d_ptr->toolBars.insert(toolBar, newActions);
+    d_ptr->toolBarsWithSeparators.insert(toolBar, newActionsWithSeparators);
+}
+
+void QtFullToolBarManager::removeDefaultToolBar(QToolBar *toolBar)
+{
+    if (!d_ptr->defaultToolBars.contains(toolBar))
+        return;
+
+    QList<QAction *> defaultActions = d_ptr->defaultToolBars[toolBar];
+    setToolBar(toolBar, QList<QAction *>());
+    QListIterator<QAction *> itAction(defaultActions);
+    while (itAction.hasNext())
+        removeAction(itAction.next());
+
+    d_ptr->toolBars.remove(toolBar);
+    d_ptr->toolBarsWithSeparators.remove(toolBar);
+    d_ptr->defaultToolBars.remove(toolBar);
+
+    itAction.toFront();
+    while (itAction.hasNext()) {
+        QAction *action = itAction.next();
+        if (action)
+            toolBar->insertAction(0, action);
+        else
+            toolBar->insertSeparator(0);
+    }
+}
+
+QMap<QToolBar *, QList<QAction *> > QtFullToolBarManager::defaultToolBars() const
+{
+    return d_ptr->defaultToolBars;
+}
+
+bool QtFullToolBarManager::isDefaultToolBar(QToolBar *toolBar) const
+{
+    if (d_ptr->defaultToolBars.contains(toolBar))
+        return true;
+    return false;
+}
+
+QToolBar *QtFullToolBarManager::createToolBar(const QString &toolBarName)
+{
+    if (!mainWindow())
+        return 0;
+    QToolBar *toolBar = new QToolBar(toolBarName, mainWindow());
+    int i = 1;
+    QLatin1String prefix("_Custom_Toolbar_");
+    QString name = QString("%1%2").arg(prefix).arg(i);
+    while (d_ptr->toolBarByName(name))
+        name = QString("%1%2").arg(prefix).arg(++i);
+    toolBar->setObjectName(name);
+    mainWindow()->addToolBar(toolBar);
+    d_ptr->customToolBars.append(toolBar);
+    d_ptr->toolBars.insert(toolBar, QList<QAction *>());
+    d_ptr->toolBarsWithSeparators.insert(toolBar, QList<QAction *>());
+    //emit toolBarCreated(toolBar);
+    return toolBar;
+}
+
+void QtFullToolBarManager::deleteToolBar(QToolBar *toolBar)
+{
+    if (!d_ptr->toolBars.contains(toolBar))
+        return;
+    if (d_ptr->defaultToolBars.contains(toolBar))
+        return;
+    setToolBar(toolBar, QList<QAction *>());
+    //emit toolBarRemoved(toolBar);
+    d_ptr->customToolBars.removeAll(toolBar);
+    d_ptr->toolBars.remove(toolBar);
+    d_ptr->toolBarsWithSeparators.remove(toolBar);
+    delete toolBar;
+}
+
+QList<QAction *> QtFullToolBarManager::actions(QToolBar *toolBar) const
+{
+    if (d_ptr->toolBars.contains(toolBar))
+        return d_ptr->toolBars.value(toolBar);
+    return QList<QAction *>();
+}
+
+void QtFullToolBarManager::setToolBars(const QMap<QToolBar *, QList<QAction *> > &actions)
+{
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator it = actions.constBegin();
+    while (it != actions.constEnd()) {
+        setToolBar(it.key(), it.value());
+        it++;
+    }
+}
+
+void QtFullToolBarManager::setToolBar(QToolBar *toolBar, const QList<QAction *> &actions)
+{
+    if (!toolBar)
+        return;
+    if (!d_ptr->toolBars.contains(toolBar))
+        return;
+
+    if (actions == d_ptr->toolBars[toolBar])
+        return;
+
+    QMap<QToolBar *, QList<QAction *> > toRemove;
+
+    QList<QAction *> newActions;
+    QListIterator<QAction *> itAction(actions);
+    while (itAction.hasNext()) {
+        QAction *action = itAction.next();
+        if (!action || (!newActions.contains(action) && d_ptr->allActions.contains(action)))
+            newActions.append(action);
+
+        QToolBar *oldToolBar = d_ptr->toolBarWidgetAction(action);
+        if (oldToolBar && oldToolBar != toolBar)
+            toRemove[oldToolBar].append(action);
+    }
+
+    d_ptr->removeWidgetActions(toRemove);
+    //emit toolBarChanged(toolBar, newActions);
+
+    QList<QAction *> oldActions = d_ptr->toolBarsWithSeparators.value(toolBar);
+    QListIterator<QAction *> itOldAction(oldActions);
+    while (itOldAction.hasNext()) {
+        QAction *action = itOldAction.next();
+        /*
+        When addDefaultToolBar() separator actions could be checked if they are
+        inserted in other toolbars - if yes then create new one.
+        */
+        if (d_ptr->toolBarWidgetAction(action) == toolBar)
+            d_ptr->widgetActions.insert(action, 0);
+        toolBar->removeAction(action);
+        if (action->isSeparator())
+            delete action;
+        else
+            d_ptr->actionToToolBars[action].removeAll(toolBar);
+    }
+
+    QList<QAction *> newActionsWithSeparators;
+    QListIterator<QAction *> itNewActions(newActions);
+    while (itNewActions.hasNext()) {
+        QAction *action = itNewActions.next();
+        QAction *newAction = 0;
+        if (!action)
+            newAction = toolBar->insertSeparator(0);
+        if (d_ptr->allActions.contains(action)) {
+            toolBar->insertAction(0, action);
+            newAction = action;
+            d_ptr->actionToToolBars[action].append(toolBar);
+        }
+        newActionsWithSeparators.append(newAction);
+    }
+    d_ptr->toolBars.insert(toolBar, newActions);
+    d_ptr->toolBarsWithSeparators.insert(toolBar, newActionsWithSeparators);
+}
+
+QMap<QToolBar *, QList<QAction *> > QtFullToolBarManager::toolBarsActions() const
+{
+    return d_ptr->toolBars;
+}
+
+void QtFullToolBarManager::resetToolBar(QToolBar *toolBar)
+{
+    if (!isDefaultToolBar(toolBar))
+        return;
+    setToolBar(toolBar, defaultToolBars().value(toolBar));
+}
+
+void QtFullToolBarManager::resetAllToolBars()
+{
+    setToolBars(defaultToolBars());
+    QList<QToolBar *> oldCustomToolBars = d_ptr->customToolBars;
+    QListIterator<QToolBar *> itToolBar(oldCustomToolBars);
+    while (itToolBar.hasNext()) {
+        deleteToolBar(itToolBar.next());
+    }
+}
+
+QByteArray QtFullToolBarManager::saveState(int version) const
+{
+    QByteArray data;
+    QDataStream stream(&data, QIODevice::WriteOnly);
+    stream << QtFullToolBarManagerPrivate::VersionMarker;
+    stream << version;
+    d_ptr->saveState(stream);
+    return data;
+}
+
+bool QtFullToolBarManager::restoreState(const QByteArray &state, int version)
+{
+    QByteArray sd = state;
+    QDataStream stream(&sd, QIODevice::ReadOnly);
+    int marker, v;
+    stream >> marker;
+    stream >> v;
+    if (marker != QtFullToolBarManagerPrivate::VersionMarker || v != version)
+        return false;
+    return d_ptr->restoreState(stream);
+}
+
+
+class QtToolBarManagerPrivate
+{
+    class QtToolBarManager *q_ptr;
+    Q_DECLARE_PUBLIC(QtToolBarManager)
+public:
+    QtFullToolBarManager *manager;
+};
+
+//////////////////////////////////////
+
+/*! \class QtToolBarManager
+
+    \brief The QtToolBarManager class provides toolbar management for
+    main windows.
+
+    The QtToolBarManager is typically used with a QtToolBarDialog
+    which allows the user to customize the toolbars for a given main
+    window. The QtToolBarDialog class's functionality is controlled by
+    an instance of the QtToolBarManager class, and the main window is
+    specified using the QtToolBarManager class's setMainWindow()
+    function.
+
+    The currently specified main window can be retrieved using the
+    mainWindow() function.
+
+    The toolbar manager holds lists of the given main window's actions
+    and toolbars, and can add actions and toolbars to these
+    lists using the addAction() and addToolBar() functions
+    respectively. The actions can in addition be categorized
+    acccording to the user's preferences. The toolbar manager can also
+    remove custom actions and toolbars using the removeAction() and
+    removeToolBar() functions.
+
+    Finally, the QtToolBarManager is able to save the customized state
+    of its toolbars using the saveState() function as well as restore
+    the toolbars' saved state using restoreState() function.
+
+    \sa QtToolBarDialog
+*/
+
+/*!
+    Creates a toolbar manager with the given \a parent.
+*/
+QtToolBarManager::QtToolBarManager(QObject *parent)
+    : QObject(parent)
+{
+    d_ptr = new QtToolBarManagerPrivate;
+    d_ptr->q_ptr = this;
+
+    d_ptr->manager = new QtFullToolBarManager(this);
+}
+
+/*!
+    Destroys the toolbar manager.
+*/
+QtToolBarManager::~QtToolBarManager()
+{
+    delete d_ptr;
+}
+
+/*!
+    Sets the main window upon which the toolbar manager operates, to
+    be the given \a mainWindow.
+*/
+void QtToolBarManager::setMainWindow(QMainWindow *mainWindow)
+{
+    d_ptr->manager->setMainWindow(mainWindow);
+}
+
+/*!
+    Returns the main window associated this toolbar manager.
+*/
+QMainWindow *QtToolBarManager::mainWindow() const
+{
+    return d_ptr->manager->mainWindow();
+}
+
+/*!
+    Adds the given \a action to the given \a category in the manager's
+    list of actions. If the \a category doesn't exist it is created.
+    Only non separator actions can be added. If the action is already
+    added to the list, the function doesn't do anything.
+
+    \sa removeAction()
+*/
+void QtToolBarManager::addAction(QAction *action, const QString &category)
+{
+    d_ptr->manager->addAction(action, category);
+}
+
+/*!
+    Removes the specified \a action from the manager's list of
+    actions. The action is also removed from all the registered
+    toolbars.  If the specified \a action is the only action in its
+    category, that category is removed as well.
+
+    \sa addAction()
+*/
+void QtToolBarManager::removeAction(QAction *action)
+{
+    d_ptr->manager->removeAction(action);
+}
+
+/*!
+    Adds the given \a toolBar to the manager's toolbar list.
+
+    All the \a toolBar's actions are automatically added to the given
+    \a category in the manager's list of actions if they're not
+    already there. The manager remembers which toolbar the actions
+    belonged to, so, when the \a toolBar is removed, its actions will
+    be removed as well.
+
+    Custom toolbars are created with the main window returned by
+    the mainWindow() function, as its parent.
+
+    \sa removeToolBar()
+*/
+void QtToolBarManager::addToolBar(QToolBar *toolBar, const QString &category)
+{
+    d_ptr->manager->addDefaultToolBar(toolBar, category);
+}
+
+/*!
+    Removes the specified \a toolBar from the manager's list. All the
+    actions that existed in the specified \a toolBar when it was
+    added are removed as well.
+
+    \sa addToolBar()
+*/
+void QtToolBarManager::removeToolBar(QToolBar *toolBar)
+{
+    d_ptr->manager->removeDefaultToolBar(toolBar);
+}
+
+/*!
+    Returns the manager's toolbar list.
+*/
+QList<QToolBar *> QtToolBarManager::toolBars() const
+{
+    return d_ptr->manager->toolBarsActions().keys();
+}
+
+/*
+void QtToolBarManager::resetToolBar(QToolBar *toolBar)
+{
+    d_ptr->manager->resetToolBar(toolBar);
+}
+
+void QtToolBarManager::resetAllToolBars()
+{
+    d_ptr->manager->resetAllToolBars();
+}
+*/
+
+/*!
+    Saves the state of the toolbar manager's toolbars. The \a version
+    number is stored as part of the data.
+
+    Identifies all the QToolBar and QAction objects by their object
+    name property. Ensure that this property is unique for each
+    QToolBar and QAction that you add using the QtToolBarManager.
+
+    Returns an identifier for the state which can be passed along with
+    the version number to the restoreState() function to restore the
+    saved state.
+
+    \sa restoreState()
+*/
+QByteArray QtToolBarManager::saveState(int version) const
+{
+    return d_ptr->manager->saveState(version);
+}
+
+/*!
+    Restores the saved state of the toolbar manager's toolbars.  The
+    \a version number is compared with the version number of the
+    stored \a state.
+
+    Returns true if the version numbers are matching and the toolbar
+    manager's state is restored; otherwise the toolbar manager's state
+    is left unchanged and the function returns false.
+
+    Note that the state of the toolbar manager's toolbars should be
+    restored before restoring the state of the main window's toolbars
+    and dockwidgets using the QMainWindow::restoreState() function. In
+    that way the restoreState() function can create the custom
+    toolbars before the QMainWindow::restoreState() function restores
+    the custom toolbars' positions.
+
+    \sa saveState()
+*/
+bool QtToolBarManager::restoreState(const QByteArray &state, int version)
+{
+    return d_ptr->manager->restoreState(state, version);
+}
+
+//////////////////////
+
+class ToolBarItem {
+public:
+    ToolBarItem() : tb(0) {}
+    ToolBarItem(QToolBar *toolBar) : tb(toolBar) {}
+    ToolBarItem(QToolBar *toolBar, const QString &toolBarName)
+            : tb(toolBar), tbName(toolBarName) {}
+    ToolBarItem(const QString &toolBarName) : tb(0), tbName(toolBarName) {}
+    QToolBar *toolBar() const
+        { return tb; }
+    void setToolBar(QToolBar *toolBar)
+        { tb = toolBar; }
+    QString toolBarName() const
+        { return tbName; }
+    void setToolBarName(const QString &toolBarName)
+        { tbName = toolBarName; }
+private:
+    QToolBar *tb;
+    QString tbName;
+};
+
+class QtToolBarDialogPrivate {
+    QtToolBarDialog *q_ptr;
+    Q_DECLARE_PUBLIC(QtToolBarDialog)
+public:
+    QtToolBarDialogPrivate()
+        : toolBarManager(0),
+          currentAction(0),
+          currentToolBar(0)
+          { }
+
+    ToolBarItem *createItem(QToolBar *toolBar);
+    ToolBarItem *createItem(const QString &toolBarName);
+    void deleteItem(ToolBarItem *item);
+
+    void newClicked();
+    void removeClicked();
+    void defaultClicked();
+    void okClicked();
+    void applyClicked();
+    void cancelClicked();
+    void upClicked();
+    void downClicked();
+    void leftClicked();
+    void rightClicked();
+    void renameClicked();
+    void toolBarRenamed(QListWidgetItem *item);
+    void currentActionChanged(QTreeWidgetItem *current);
+    void currentToolBarChanged(QListWidgetItem *current);
+    void currentToolBarActionChanged(QListWidgetItem *current);
+
+    void removeToolBar(ToolBarItem *item);
+    bool isDefaultToolBar(ToolBarItem *item) const;
+    void setButtons();
+    void clearOld();
+    void fillNew();
+    QtFullToolBarManager *toolBarManager;
+    QMap<ToolBarItem *, QList<QAction *> > currentState;
+    QMap<QToolBar *, ToolBarItem *> toolBarItems;
+    QSet<ToolBarItem *> createdItems;
+    QSet<ToolBarItem *> removedItems;
+
+    QSet<ToolBarItem *> allToolBarItems;
+
+    // static
+    QTreeWidgetItem *currentAction;
+    QMap<QAction *, QTreeWidgetItem *> actionToItem;
+    QMap<QTreeWidgetItem *, QAction *> itemToAction;
+
+    // dynamic
+    ToolBarItem *currentToolBar;
+    QMap<ToolBarItem *, QListWidgetItem *> toolBarToItem;
+    QMap<QListWidgetItem *, ToolBarItem *> itemToToolBar;
+
+    // dynamic
+    QMap<QAction *, QListWidgetItem *> actionToCurrentItem;
+    QMap<QListWidgetItem *, QAction *> currentItemToAction;
+
+    QMap<QAction *, ToolBarItem *> widgetActionToToolBar;
+    QMap<ToolBarItem *, QSet<QAction *> > toolBarToWidgetActions;
+
+    QString separatorText;
+    Ui::QtToolBarDialog ui;
+};
+
+ToolBarItem *QtToolBarDialogPrivate::createItem(QToolBar *toolBar)
+{
+    if (!toolBar)
+        return 0;
+    ToolBarItem *item = new ToolBarItem(toolBar, toolBar->windowTitle());
+    allToolBarItems.insert(item);
+    return item;
+}
+
+ToolBarItem *QtToolBarDialogPrivate::createItem(const QString &toolBarName)
+{
+    ToolBarItem *item = new ToolBarItem(toolBarName);
+    allToolBarItems.insert(item);
+    return item;
+}
+
+void QtToolBarDialogPrivate::deleteItem(ToolBarItem *item)
+{
+    if (!allToolBarItems.contains(item))
+        return;
+    allToolBarItems.remove(item);
+    delete item;
+}
+
+void QtToolBarDialogPrivate::clearOld()
+{
+    ui.actionTree->clear();
+    ui.toolBarList->clear();
+    ui.currentToolBarList->clear();
+    ui.removeButton->setEnabled(false);
+    ui.newButton->setEnabled(false);
+    ui.upButton->setEnabled(false);
+    ui.downButton->setEnabled(false);
+    ui.leftButton->setEnabled(false);
+    ui.rightButton->setEnabled(false);
+
+    actionToItem.clear();
+    itemToAction.clear();
+    toolBarToItem.clear();
+    itemToToolBar.clear();
+    actionToCurrentItem.clear();
+    currentItemToAction.clear();
+    widgetActionToToolBar.clear();
+    toolBarToWidgetActions.clear();
+
+    toolBarItems.clear();
+    currentState.clear();
+    createdItems.clear();
+    removedItems.clear();
+    QSetIterator<ToolBarItem *> itItem(allToolBarItems);
+    while (itItem.hasNext())
+        delete itItem.next();
+    allToolBarItems.clear();
+
+    currentToolBar = 0;
+    currentAction = 0;
+}
+
+void QtToolBarDialogPrivate::fillNew()
+{
+    if (!toolBarManager)
+        return;
+
+    QTreeWidgetItem *item = new QTreeWidgetItem(ui.actionTree);
+    item->setText(0, separatorText);
+    ui.actionTree->setCurrentItem(item);
+    currentAction = item;
+    actionToItem.insert(0, item);
+    itemToAction.insert(item, 0);
+    QStringList categories = toolBarManager->categories();
+    QStringListIterator itCategory(categories);
+    while (itCategory.hasNext()) {
+        QString category = itCategory.next();
+        QTreeWidgetItem *categoryItem = new QTreeWidgetItem(ui.actionTree);
+        categoryItem->setText(0, category);
+        QList<QAction *> actions = toolBarManager->categoryActions(category);
+        QListIterator<QAction *> itAction(actions);
+        while (itAction.hasNext()) {
+            QAction *action = itAction.next();
+            item = new QTreeWidgetItem(categoryItem);
+            item->setText(0, action->text());
+            item->setIcon(0, action->icon());
+            item->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic);
+            actionToItem.insert(action, item);
+            itemToAction.insert(item, action);
+            if (toolBarManager->isWidgetAction(action)) {
+                item->setData(0, Qt::TextColorRole, QColor(Qt::blue));
+                widgetActionToToolBar.insert(action, 0);
+            }
+            item->setFlags(item->flags() | Qt::ItemIsDragEnabled);
+        }
+        ui.actionTree->setItemExpanded(categoryItem, true);
+    }
+    //ui.actionTree->sortItems(0, Qt::AscendingOrder);
+
+    QMap<QToolBar *, QList<QAction *> > toolBars = toolBarManager->toolBarsActions();
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator it = toolBars.constBegin();
+    while (it != toolBars.constEnd()) {
+        QToolBar *toolBar = it.key();
+        ToolBarItem *tbItem = createItem(toolBar);
+        toolBarItems.insert(toolBar, tbItem);
+        QListWidgetItem *item = new QListWidgetItem(toolBar->windowTitle(),
+                ui.toolBarList);
+        toolBarToItem.insert(tbItem, item);
+        itemToToolBar.insert(item, tbItem);
+        QList<QAction *> actions = it.value();
+        QListIterator<QAction *> itAction(actions);
+        while (itAction.hasNext()) {
+            QAction *action = itAction.next();
+            if (toolBarManager->isWidgetAction(action)) {
+                widgetActionToToolBar.insert(action, tbItem);
+                toolBarToWidgetActions[tbItem].insert(action);
+            }
+        }
+        currentState.insert(tbItem, actions);
+        if (it == toolBars.constBegin())
+            ui.toolBarList->setCurrentItem(item);
+        if (isDefaultToolBar(tbItem))
+            item->setData(Qt::TextColorRole, QColor(Qt::darkGreen));
+        else
+            item->setFlags(item->flags() | Qt::ItemIsEditable);
+
+        it++;
+    }
+    ui.toolBarList->sortItems();
+    setButtons();
+}
+
+bool QtToolBarDialogPrivate::isDefaultToolBar(ToolBarItem *item) const
+{
+    if (!item)
+        return false;
+    if (!item->toolBar())
+        return false;
+    return toolBarManager->isDefaultToolBar(item->toolBar());
+}
+
+void QtToolBarDialogPrivate::setButtons()
+{
+    bool newEnabled = false;
+    bool removeEnabled = false;
+    bool renameEnabled = false;
+    bool upEnabled = false;
+    bool downEnabled = false;
+    bool leftEnabled = false;
+    bool rightEnabled = false;
+
+    if (toolBarManager) {
+        newEnabled = true;
+        removeEnabled = !isDefaultToolBar(currentToolBar);
+        renameEnabled = removeEnabled;
+        QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem();
+        if (currentToolBarAction) {
+            int row = ui.currentToolBarList->row(currentToolBarAction);
+            upEnabled = row > 0;
+            downEnabled = row < ui.currentToolBarList->count() - 1;
+            leftEnabled = true;
+        }
+        if (currentAction && currentToolBar)
+            rightEnabled = true;
+    }
+    ui.newButton->setEnabled(newEnabled);
+    ui.removeButton->setEnabled(removeEnabled);
+    ui.renameButton->setEnabled(renameEnabled);
+    ui.upButton->setEnabled(upEnabled);
+    ui.downButton->setEnabled(downEnabled);
+    ui.leftButton->setEnabled(leftEnabled);
+    ui.rightButton->setEnabled(rightEnabled);
+}
+
+void QtToolBarDialogPrivate::newClicked()
+{
+    QString toolBarName = q_ptr->tr("Custom Toolbar"); // = QInputDialog::getString();
+    // produce unique name
+    ToolBarItem *item = createItem(toolBarName);
+    currentState.insert(item, QList<QAction *>());
+    createdItems.insert(item);
+    QListWidgetItem *i = new QListWidgetItem(toolBarName, ui.toolBarList);
+    i->setFlags(i->flags() | Qt::ItemIsEditable);
+    ui.toolBarList->setCurrentItem(i);
+    itemToToolBar.insert(i, item);
+    toolBarToItem.insert(item, i);
+    ui.toolBarList->sortItems();
+    ui.toolBarList->setCurrentItem(i);
+    currentToolBarChanged(i);
+    renameClicked();
+}
+
+void QtToolBarDialogPrivate::removeToolBar(ToolBarItem *item)
+{
+    if (!item)
+        return;
+    if (item->toolBar() && toolBarManager->isDefaultToolBar(item->toolBar()))
+        return;
+    if (!toolBarToItem.contains(item))
+        return;
+    QListWidgetItem *i = toolBarToItem.value(item);
+    bool wasCurrent = false;
+    if (i == ui.toolBarList->currentItem())
+        wasCurrent = true;
+    int row = ui.toolBarList->row(i);
+    QMap<ToolBarItem *, QSet<QAction *> >::ConstIterator itToolBar =
+            toolBarToWidgetActions.find(item);
+    if (itToolBar != toolBarToWidgetActions.constEnd()) {
+        QSet<QAction *> actions = itToolBar.value();
+        QSetIterator<QAction *> itAction(actions);
+        while (itAction.hasNext()) {
+            QAction *action = itAction.next();
+            widgetActionToToolBar.insert(action, 0);
+        }
+        toolBarToWidgetActions.remove(item);
+    }
+
+    currentState.remove(item);
+    createdItems.remove(item);
+    toolBarToItem.remove(item);
+    itemToToolBar.remove(i);
+    delete i;
+    if (item->toolBar())
+        removedItems.insert(item);
+    else
+        deleteItem(item);
+    if (wasCurrent) {
+        if (row == ui.toolBarList->count())
+            row--;
+        if (row < 0)
+            ;
+        else
+            ui.toolBarList->setCurrentRow(row);
+    }
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::removeClicked()
+{
+    QListWidgetItem *i = ui.toolBarList->currentItem();
+    if (!i)
+        return;
+    ToolBarItem *item = itemToToolBar.value(i);
+    removeToolBar(item);
+}
+
+void QtToolBarDialogPrivate::defaultClicked()
+{
+    QMap<QToolBar *, QList<QAction *> > defaultToolBars = toolBarManager->defaultToolBars();
+    QMap<QToolBar *, QList<QAction *> >::ConstIterator itToolBar = defaultToolBars.constBegin();
+    while (itToolBar != defaultToolBars.constEnd()) {
+        QToolBar *toolBar = itToolBar.key();
+        ToolBarItem *toolBarItem = toolBarItems.value(toolBar);
+
+        if (toolBarToWidgetActions.contains(toolBarItem)) {
+            QSetIterator<QAction *> itAction(toolBarToWidgetActions.value(toolBarItem));
+            while (itAction.hasNext())
+                widgetActionToToolBar.insert(itAction.next(), 0);
+            toolBarToWidgetActions.remove(toolBarItem);
+        }
+
+        currentState.remove(toolBarItem);
+
+        QListIterator<QAction *> itAction(itToolBar.value());
+        while (itAction.hasNext()) {
+            QAction *action = itAction.next();
+            if (toolBarManager->isWidgetAction(action)) {
+                ToolBarItem *otherToolBar = widgetActionToToolBar.value(action);
+                if (otherToolBar) {
+                    toolBarToWidgetActions[otherToolBar].remove(action);
+                    currentState[otherToolBar].removeAll(action);
+                }
+                widgetActionToToolBar.insert(action, toolBarItem);
+                toolBarToWidgetActions[toolBarItem].insert(action);
+            }
+        }
+        currentState.insert(toolBarItem, itToolBar.value());
+
+        itToolBar++;
+    }
+    currentToolBarChanged(toolBarToItem.value(currentToolBar));
+
+    QList<ToolBarItem *> toolBars = currentState.keys();
+    QListIterator<ToolBarItem *> itTb(toolBars);
+    while (itTb.hasNext())
+        removeToolBar(itTb.next());
+}
+
+void QtToolBarDialogPrivate::okClicked()
+{
+    applyClicked();
+    q_ptr->accept();
+}
+
+void QtToolBarDialogPrivate::applyClicked()
+{
+    QMap<ToolBarItem *, QList<QAction *> > toolBars = currentState;
+    QMap<ToolBarItem *, QList<QAction *> >::ConstIterator itToolBar = toolBars.constBegin();
+    while (itToolBar != toolBars.constEnd()) {
+        ToolBarItem *item = itToolBar.key();
+        QToolBar *toolBar = item->toolBar();
+        if (toolBar) {
+            toolBarManager->setToolBar(toolBar, itToolBar.value());
+            toolBar->setWindowTitle(item->toolBarName());
+        }
+
+        itToolBar++;
+    }
+
+    QSet<ToolBarItem *> toRemove = removedItems;
+    QSetIterator<ToolBarItem *> itRemove(toRemove);
+    while (itRemove.hasNext()) {
+        ToolBarItem *item = itRemove.next();
+        QToolBar *toolBar = item->toolBar();
+        removedItems.remove(item);
+        currentState.remove(item);
+        deleteItem(item);
+        if (toolBar)
+            toolBarManager->deleteToolBar(toolBar);
+    }
+
+    QSet<ToolBarItem *> toCreate = createdItems;
+    QSetIterator<ToolBarItem *> itCreate(toCreate);
+    while (itCreate.hasNext()) {
+        ToolBarItem *item = itCreate.next();
+        QString toolBarName = item->toolBarName();
+        createdItems.remove(item);
+        QList<QAction *> actions = currentState.value(item);
+        QToolBar *toolBar = toolBarManager->createToolBar(toolBarName);
+        item->setToolBar(toolBar);
+        toolBarManager->setToolBar(toolBar, actions);
+    }
+}
+
+void QtToolBarDialogPrivate::upClicked()
+{
+    QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem();
+    if (!currentToolBarAction)
+        return;
+    int row = ui.currentToolBarList->row(currentToolBarAction);
+    if (row == 0)
+        return;
+    ui.currentToolBarList->takeItem(row);
+    int newRow = row - 1;
+    ui.currentToolBarList->insertItem(newRow, currentToolBarAction);
+    QList<QAction *> actions = currentState.value(currentToolBar);
+    QAction *action = actions.at(row);
+    actions.removeAt(row);
+    actions.insert(newRow, action);
+    currentState.insert(currentToolBar, actions);
+    ui.currentToolBarList->setCurrentItem(currentToolBarAction);
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::downClicked()
+{
+    QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem();
+    if (!currentToolBarAction)
+        return;
+    int row = ui.currentToolBarList->row(currentToolBarAction);
+    if (row == ui.currentToolBarList->count() - 1)
+        return;
+    ui.currentToolBarList->takeItem(row);
+    int newRow = row + 1;
+    ui.currentToolBarList->insertItem(newRow, currentToolBarAction);
+    QList<QAction *> actions = currentState.value(currentToolBar);
+    QAction *action = actions.at(row);
+    actions.removeAt(row);
+    actions.insert(newRow, action);
+    currentState.insert(currentToolBar, actions);
+    ui.currentToolBarList->setCurrentItem(currentToolBarAction);
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::leftClicked()
+{
+    QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem();
+    if (!currentToolBarAction)
+        return;
+    int row = ui.currentToolBarList->row(currentToolBarAction);
+    currentState[currentToolBar].removeAt(row);
+    QAction *action = currentItemToAction.value(currentToolBarAction);
+    if (widgetActionToToolBar.contains(action)) {
+        ToolBarItem *item = widgetActionToToolBar.value(action);
+        if (item == currentToolBar) { // have to be
+            toolBarToWidgetActions[item].remove(action);
+            if (toolBarToWidgetActions[item].empty())
+                toolBarToWidgetActions.remove(item);
+        }
+        widgetActionToToolBar.insert(action, 0);
+    }
+    if (action)
+        actionToCurrentItem.remove(action);
+    currentItemToAction.remove(currentToolBarAction);
+    delete currentToolBarAction;
+    if (row == ui.currentToolBarList->count())
+        row--;
+    if (row >= 0) {
+        QListWidgetItem *item = ui.currentToolBarList->item(row);
+        ui.currentToolBarList->setCurrentItem(item);
+    }
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::rightClicked()
+{
+    if (!currentAction)
+        return;
+    if (!currentToolBar)
+        return;
+    QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem();
+
+    QAction *action = itemToAction.value(currentAction);
+    QListWidgetItem *item = 0;
+    if (action) {
+        if (currentState[currentToolBar].contains(action)) {
+            item = actionToCurrentItem.value(action);
+            if (item == currentToolBarAction)
+                return;
+            int row = ui.currentToolBarList->row(item);
+            ui.currentToolBarList->takeItem(row);
+            currentState[currentToolBar].removeAt(row);
+            // only reorder here
+        } else {
+            item = new QListWidgetItem(action->text());
+            item->setIcon(action->icon());
+            item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic);
+            currentItemToAction.insert(item, action);
+            actionToCurrentItem.insert(action, item);
+            if (widgetActionToToolBar.contains(action)) {
+                item->setData(Qt::TextColorRole, QColor(Qt::blue));
+                ToolBarItem *toolBar = widgetActionToToolBar.value(action);
+                if (toolBar) {
+                    currentState[toolBar].removeAll(action);
+                    toolBarToWidgetActions[toolBar].remove(action);
+                    if (toolBarToWidgetActions[toolBar].empty())
+                        toolBarToWidgetActions.remove(toolBar);
+                }
+                widgetActionToToolBar.insert(action, currentToolBar);
+                toolBarToWidgetActions[currentToolBar].insert(action);
+            }
+        }
+    } else {
+        item = new QListWidgetItem(separatorText);
+        currentItemToAction.insert(item, 0);
+    }
+
+    int row = ui.currentToolBarList->count();
+    if (currentToolBarAction) {
+        row = ui.currentToolBarList->row(currentToolBarAction) + 1;
+    }
+    ui.currentToolBarList->insertItem(row, item);
+    currentState[currentToolBar].insert(row, action);
+    ui.currentToolBarList->setCurrentItem(item);
+
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::renameClicked()
+{
+    if (!currentToolBar)
+        return;
+
+    QListWidgetItem *item = toolBarToItem.value(currentToolBar);
+    ui.toolBarList->editItem(item);
+}
+
+void QtToolBarDialogPrivate::toolBarRenamed(QListWidgetItem *item)
+{
+    if (!currentToolBar)
+        return;
+
+    ToolBarItem *tbItem = itemToToolBar.value(item);
+    if (!tbItem)
+        return;
+    tbItem->setToolBarName(item->text());
+    //ui.toolBarList->sortItems();
+}
+
+void QtToolBarDialogPrivate::currentActionChanged(QTreeWidgetItem *current)
+{
+    if (itemToAction.contains(current))
+        currentAction = current;
+    else
+        currentAction = NULL;
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::currentToolBarChanged(QListWidgetItem *current)
+{
+    currentToolBar = itemToToolBar.value(current);
+    ui.currentToolBarList->clear();
+    actionToCurrentItem.clear();
+    currentItemToAction.clear();
+    setButtons();
+    if (!currentToolBar) {
+        return;
+    }
+    QList<QAction *> actions = currentState.value(currentToolBar);
+    QListIterator<QAction *> itAction(actions);
+    QListWidgetItem *first = 0;
+    while (itAction.hasNext()) {
+        QAction *action = itAction.next();
+        QString actionName = separatorText;
+        if (action)
+            actionName = action->text();
+        QListWidgetItem *item = new QListWidgetItem(actionName, ui.currentToolBarList);
+        if (action) {
+            item->setIcon(action->icon());
+            item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic);
+            actionToCurrentItem.insert(action, item);
+            if (widgetActionToToolBar.contains(action))
+                item->setData(Qt::TextColorRole, QColor(Qt::blue));
+        }
+        currentItemToAction.insert(item, action);
+        if (!first)
+            first = item;
+    }
+    if (first)
+        ui.currentToolBarList->setCurrentItem(first);
+}
+
+void QtToolBarDialogPrivate::currentToolBarActionChanged(QListWidgetItem *)
+{
+    setButtons();
+}
+
+void QtToolBarDialogPrivate::cancelClicked()
+{
+    // just nothing
+    q_ptr->reject();
+}
+
+//////////////////////
+/*
+class FeedbackItemDelegate : public QItemDelegate
+{
+    Q_OBJECT
+public:
+    FeedbackItemDelegate(QObject *parent = 0) : QItemDelegate(parent) { }
+
+    virtual void paint(QPainter *painter, const QStyleOptionViewItem &option,
+                    const QModelIndex & index) const;
+    virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
+};
+
+void FeedbackItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
+                            const QModelIndex &index) const
+{
+    if ()
+    painter->save();
+    QRect r = option.rect;
+    float yCentral = r.height() / 2.0;
+    float margin = 2.0;
+    float arrowWidth = 5.0;
+    float width = 20;
+    qDebug("rect: x %d, y %d, w %d, h %d", r.x(), r.y(), r.width(), r.height());
+    QLineF lineBase(0.0 + margin, r.y() + yCentral, width - margin, r.y() + yCentral);
+    QLineF lineArrowLeft(width - margin - arrowWidth, r.y() + yCentral - arrowWidth,
+                    width - margin, r.y() + yCentral);
+    QLineF lineArrowRight(width - margin - arrowWidth, r.y() + yCentral + arrowWidth,
+                    width - margin, r.y() + yCentral);
+    painter->drawLine(lineBase);
+    painter->drawLine(lineArrowLeft);
+    painter->drawLine(lineArrowRight);
+    painter->translate(QPoint(width, 0));
+    QItemDelegate::paint(painter, option, index);
+    painter->restore();
+}
+
+QSize FeedbackItemDelegate::sizeHint(const QStyleOptionViewItem &option,
+            const QModelIndex &index) const
+{
+    //return QItemDelegate::sizeHint(option, index);
+    QSize s = QItemDelegate::sizeHint(option, index);
+    s.setWidth(s.width() - 20);
+    return s;
+}
+
+class QtToolBarListWidget : public QListWidget
+{
+    Q_OBJECT
+public:
+    QtToolBarListWidget(QWidget *parent) : QListWidget(parent), actionDrag(false) {}
+
+protected:
+    void startDrag(Qt::DropActions supportedActions);
+
+    void dragEnterEvent(QDragEnterEvent *event);
+    void dragMoveEvent(QDragMoveEvent *event);
+    void dragLeaveEvent(QDragLeaveEvent *);
+    void dropEvent(QDropEvent *event);
+
+    void setDragAction(const QString *action) { actionName = action; }
+private:
+    QPersistentModelIndex lastDropIndicator;
+    QString actionName;
+    bool actionDrag;
+};
+
+void QtToolBarListWidget::startDrag(Qt::DropActions supportedActions)
+{
+    QListWidgetItem *item = currentItem();
+    if (item) {
+        actionName = QString();
+        emit aboutToDrag(item);
+        if (!actionName.isEmpty()) {
+            QDrag *drag = new QDrag(this);
+            QMimeData *data = new QMimeData;
+            data->setData("action", actionName.toLocal8Bit().constData());
+            drag->setMimeData(data);
+            drag->start(supportedActions);
+        }
+    }
+}
+
+void QtToolBarListWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+    const QMimeData *mime = event->mimeData();
+    actionDrag = mime->hasFormat("action");
+    if (actionDrag)
+        event->accept();
+    else
+        event->ignore();
+}
+
+void QtToolBarListWidget::dragMoveEvent(QDragMoveEvent *event)
+{
+    event->ignore();
+    if (actionDrag) {
+        QPoint p = event->pos();
+        QListWidgetItem *item = itemAt(p);
+        Indicator indic = QtToolBarListWidget::None;
+        if (item) {
+            QRect rect = visualItemRect(item);
+            if (p.y() - rect.top() < rect.height() / 2)
+                indic = QtToolBarListWidget::Above;
+            else
+                indic = QtToolBarListWidget::Below;
+        }
+        setIndicator(item, indic);
+        event->accept();
+    }
+}
+
+void QtToolBarListWidget::dragLeaveEvent(QDragLeaveEvent *)
+{
+    if (actionDrag) {
+        actionDrag = false;
+        setIndicator(item, QtToolBarListWidget::None);
+    }
+}
+
+void QtToolBarListWidget::dropEvent(QDropEvent *event)
+{
+    if (actionDrag) {
+        QListWidgetItem *item = indicatorItem();
+        Indicator indic = indicator();
+        QByteArray array = event->mimeData()->data("action");
+        QDataStream stream(&array, QIODevice::ReadOnly);
+        QString action;
+        stream >> action;
+        emit actionDropped(action, item, );
+
+        actionDrag = false;
+        setIndicator(item, QtToolBarListWidget::None);
+    }
+}
+*/
+
+/*! \class QtToolBarDialog
+
+    \brief The QtToolBarDialog class provides a dialog for customizing
+    toolbars.
+
+    QtToolBarDialog allows the user to customize the toolbars for a
+    given main window.
+
+    \image qttoolbardialog.png
+
+    The dialog lets the users add, rename and remove custom toolbars.
+    Note that built-in toolbars are marked with a green color, and
+    cannot be removed or renamed.
+
+    The users can also add and remove actions from the toolbars. An
+    action can be added to many toolbars, but a toolbar can only
+    contain one instance of each action. Actions that contains a
+    widget are marked with a blue color in the list of actions, and
+    can only be added to one single toolbar.
+
+    Finally, the users can add separators to the toolbars.
+
+    The original toolbars can be restored by clicking the \gui
+    {Restore all} button. All custom toolbars will then be removed,
+    and all built-in toolbars will be restored to their original state.
+
+    The QtToolBarDialog class's functionality is controlled by an
+    instance of the QtToolBarManager class, and the main window is
+    specified using the QtToolBarManager::setMainWindow() function.
+
+    All you need to do to use QtToolBarDialog is to specify an
+    QtToolBarManager instance and call the QDialog::exec() slot:
+
+    \code
+    QtToolBarManager *toolBarManager;
+
+    void MyMainWindow::customize()
+        {
+            QtToolBarDialog dialog(this);
+            dialog.setToolBarManager(toolBarManager);
+            dialog.exec();
+        }
+    \endcode
+
+    \sa QtToolBarManager
+*/
+
+/*!
+    Creates a toolbar dialog with the given \a parent and the specifed
+    window \a flags.
+*/
+QtToolBarDialog::QtToolBarDialog(QWidget *parent, Qt::WFlags flags)
+    : QDialog(parent, flags)
+{
+    d_ptr = new QtToolBarDialogPrivate;
+    d_ptr->q_ptr = this;
+    d_ptr->ui.setupUi(this);
+    d_ptr->separatorText = tr("< S E P A R A T O R >");
+
+    d_ptr->ui.actionTree->setColumnCount(1);
+    d_ptr->ui.actionTree->setRootIsDecorated(false);
+    d_ptr->ui.actionTree->header()->hide();
+/*
+    ui.toolBarList->setEditTriggers(QAbstractItemView::DoubleClicked |
+                QAbstractItemView::EditKeyPressed);
+*/
+
+//    ui.actionList->setDragEnabled(true);
+//    FeedbackItemDelegate *del = new FeedbackItemDelegate(this);
+//    ui.currentToolBarList->setItemDelegate(del);
+//    ui.currentToolBarList->setAcceptDrops(true);
+
+	d_ptr->ui.upButton->setIcon(QIcon(":/images/icons/go-up.png"));
+	d_ptr->ui.downButton->setIcon(QIcon(":/images/icons/go-down.png"));
+	d_ptr->ui.leftButton->setIcon(QIcon(":/images/icons/go-previous.png"));
+	d_ptr->ui.rightButton->setIcon(QIcon(":/images/icons/go-next.png"));
+	d_ptr->ui.newButton->setIcon(QIcon(":/images/icons/list-add.png"));
+	d_ptr->ui.removeButton->setIcon(QIcon(":/images/icons/list-remove.png"));
+
+    connect(d_ptr->ui.newButton, SIGNAL(clicked()), this, SLOT(newClicked()));
+    connect(d_ptr->ui.removeButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
+    connect(d_ptr->ui.renameButton, SIGNAL(clicked()), this, SLOT(renameClicked()));
+    connect(d_ptr->ui.defaultButton, SIGNAL(clicked()), this, SLOT(defaultClicked()));
+    connect(d_ptr->ui.okButton, SIGNAL(clicked()), this, SLOT(okClicked()));
+    connect(d_ptr->ui.applyButton, SIGNAL(clicked()), this, SLOT(applyClicked()));
+    connect(d_ptr->ui.cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked()));
+    connect(d_ptr->ui.upButton, SIGNAL(clicked()), this, SLOT(upClicked()));
+    connect(d_ptr->ui.downButton, SIGNAL(clicked()), this, SLOT(downClicked()));
+    connect(d_ptr->ui.leftButton, SIGNAL(clicked()), this, SLOT(leftClicked()));
+    connect(d_ptr->ui.rightButton, SIGNAL(clicked()), this, SLOT(rightClicked()));
+
+    connect(d_ptr->ui.actionTree, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
+                    this, SLOT(currentActionChanged(QTreeWidgetItem *)));
+    connect(d_ptr->ui.toolBarList, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
+                    this, SLOT(currentToolBarChanged(QListWidgetItem *)));
+    connect(d_ptr->ui.currentToolBarList,
+                    SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
+                    this, SLOT(currentToolBarActionChanged(QListWidgetItem *)));
+
+    connect(d_ptr->ui.actionTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)),
+                    this, SLOT(rightClicked()));
+    connect(d_ptr->ui.currentToolBarList, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
+                    this, SLOT(leftClicked()));
+    connect(d_ptr->ui.toolBarList, SIGNAL(itemChanged(QListWidgetItem *)),
+                    this, SLOT(toolBarRenamed(QListWidgetItem *)));
+}
+
+/*!
+    Destroys the toolbar dialog.
+*/
+QtToolBarDialog::~QtToolBarDialog()
+{
+    d_ptr->clearOld();
+    delete d_ptr;
+}
+
+/*!
+    Connects the toolbar dialog to the given \a toolBarManager. Then,
+    when exec() is called, the toolbar dialog will operate using the
+    given \a toolBarManager.
+*/
+void QtToolBarDialog::setToolBarManager(QtToolBarManager *toolBarManager)
+{
+    if (d_ptr->toolBarManager == toolBarManager->d_ptr->manager)
+        return;
+    if (isVisible())
+        d_ptr->clearOld();
+    d_ptr->toolBarManager = toolBarManager->d_ptr->manager;
+    if (isVisible())
+        d_ptr->fillNew();
+}
+
+/*!
+    \reimp
+*/
+void QtToolBarDialog::showEvent(QShowEvent *event)
+{
+    if (!event->spontaneous())
+        d_ptr->fillNew();
+}
+
+/*!
+    \reimp
+*/
+void QtToolBarDialog::hideEvent(QHideEvent *event)
+{
+    if (!event->spontaneous())
+        d_ptr->clearOld();
+}
+
+#include "moc_qttoolbardialog.cpp"
+#include "qttoolbardialog.moc"
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.h
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.h	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.h	(revision 117)
@@ -0,0 +1,144 @@
+/****************************************************************************
+** 
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+** 
+** This file is part of a Qt Solutions component.
+**
+** Commercial Usage  
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Solutions Commercial License Agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and Nokia.
+** 
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** 
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+** 
+** GNU General Public License Usage 
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+** 
+** Please note Third Party Software included with Qt Solutions may impose
+** additional restrictions and it is the user's responsibility to ensure
+** that they have met the licensing requirements of the GPL, LGPL, or Qt
+** Solutions Commercial license and the relevant license of the Third
+** Party Software they are using.
+** 
+** If you are unsure which license is appropriate for your use, please
+** contact Nokia at qt-info@nokia.com.
+** 
+****************************************************************************/
+
+#ifndef QTTOOLBARDIALOG_H
+#define QTTOOLBARDIALOG_H
+
+#include <QtGui/QDialog>
+
+#if defined(Q_WS_WIN)
+#  if !defined(QT_QTTOOLBARDIALOG_EXPORT) && !defined(QT_QTTOOLBARDIALOG_IMPORT)
+#    define QT_QTTOOLBARDIALOG_EXPORT
+#  elif defined(QT_QTTOOLBARDIALOG_IMPORT)
+#    if defined(QT_QTTOOLBARDIALOG_EXPORT)
+#      undef QT_QTTOOLBARDIALOG_EXPORT
+#    endif
+#    define QT_QTTOOLBARDIALOG_EXPORT __declspec(dllimport)
+#  elif defined(QT_QTTOOLBARDIALOG_EXPORT)
+#    undef QT_QTTOOLBARDIALOG_EXPORT
+#    define QT_QTTOOLBARDIALOG_EXPORT __declspec(dllexport)
+#  endif
+#else
+#  define QT_QTTOOLBARDIALOG_EXPORT
+#endif
+
+class QMainWindow;
+class QAction;
+class QToolBar;
+
+class QtToolBarManagerPrivate;
+
+class QT_QTTOOLBARDIALOG_EXPORT QtToolBarManager : public QObject
+{
+    Q_OBJECT
+public:
+
+    QtToolBarManager(QObject *parent = 0);
+    ~QtToolBarManager();
+
+    void setMainWindow(QMainWindow *mainWindow);
+    QMainWindow *mainWindow() const;
+
+    void addAction(QAction *action, const QString &category);
+    void removeAction(QAction *action);
+
+    void addToolBar(QToolBar *toolBar, const QString &category);
+    void removeToolBar(QToolBar *toolBar);
+
+    QList<QToolBar *> toolBars() const;
+
+    QByteArray saveState(int version = 0) const;
+    bool restoreState(const QByteArray &state, int version = 0);
+
+private:
+
+    friend class QtToolBarDialog;
+    QtToolBarManagerPrivate *d_ptr;
+    Q_DECLARE_PRIVATE(QtToolBarManager)
+    Q_DISABLE_COPY(QtToolBarManager)
+};
+
+class QtToolBarDialogPrivate;
+
+class QT_QTTOOLBARDIALOG_EXPORT QtToolBarDialog : public QDialog
+{
+    Q_OBJECT
+public:
+
+    QtToolBarDialog(QWidget *parent = 0, Qt::WFlags flags = 0);
+    ~QtToolBarDialog();
+
+    void setToolBarManager(QtToolBarManager *toolBarManager);
+
+protected:
+
+    void showEvent(QShowEvent *event);
+    void hideEvent(QHideEvent *event);
+
+private:
+
+    QtToolBarDialogPrivate *d_ptr;
+    Q_DECLARE_PRIVATE(QtToolBarDialog)
+    Q_DISABLE_COPY(QtToolBarDialog)
+
+    Q_PRIVATE_SLOT(d_func(), void newClicked())
+    Q_PRIVATE_SLOT(d_func(), void removeClicked())
+    Q_PRIVATE_SLOT(d_func(), void defaultClicked())
+    Q_PRIVATE_SLOT(d_func(), void okClicked())
+    Q_PRIVATE_SLOT(d_func(), void applyClicked())
+    Q_PRIVATE_SLOT(d_func(), void cancelClicked())
+    Q_PRIVATE_SLOT(d_func(), void upClicked())
+    Q_PRIVATE_SLOT(d_func(), void downClicked())
+    Q_PRIVATE_SLOT(d_func(), void leftClicked())
+    Q_PRIVATE_SLOT(d_func(), void rightClicked())
+    Q_PRIVATE_SLOT(d_func(), void renameClicked())
+    Q_PRIVATE_SLOT(d_func(), void toolBarRenamed(QListWidgetItem *))
+    Q_PRIVATE_SLOT(d_func(), void currentActionChanged(QTreeWidgetItem *))
+    Q_PRIVATE_SLOT(d_func(), void currentToolBarChanged(QListWidgetItem *))
+    Q_PRIVATE_SLOT(d_func(), void currentToolBarActionChanged(QListWidgetItem *))
+};
+
+#endif
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.pri
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.pri	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.pri	(revision 117)
@@ -0,0 +1,17 @@
+include(../common.pri)
+INCLUDEPATH += $$PWD
+DEPENDPATH += $$PWD
+
+qttoolbardialog-uselib:!qttoolbardialog-buildlib {
+    LIBS += -L$$QTTOOLBARDIALOG_LIBDIR -l$$QTTOOLBARDIALOG_LIBNAME
+} else {
+    SOURCES += $$PWD/qttoolbardialog.cpp
+    HEADERS += $$PWD/qttoolbardialog.h
+    FORMS += $$PWD/qttoolbardialog.ui
+#    RESOURCES += $$PWD/qttoolbardialog.qrc
+}
+
+win32 {
+    contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTTOOLBARDIALOG_EXPORT
+    else:qttoolbardialog-uselib:DEFINES += QT_QTTOOLBARDIALOG_IMPORT
+}
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.qrc
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.qrc	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.qrc	(revision 117)
@@ -0,0 +1,10 @@
+<RCC version="1.0">
+    <qresource prefix="/qttoolbardialog">
+        <file>images/up.png</file>
+        <file>images/down.png</file>
+        <file>images/forward.png</file>
+        <file>images/back.png</file>
+        <file>images/plus.png</file>
+        <file>images/minus.png</file>
+    </qresource>
+</RCC>
Index: trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui
===================================================================
--- trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui	(revision 117)
+++ trunk/src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui	(revision 117)
@@ -0,0 +1,240 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>QtToolBarDialog</class>
+ <widget class="QDialog" name="QtToolBarDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>487</width>
+    <height>464</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Customize Toolbars</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>8</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item rowspan="3" row="1" column="0" >
+    <widget class="QTreeWidget" name="actionTree" />
+   </item>
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Actions</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>Toolbars</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="newButton" >
+       <property name="text" >
+        <string>New</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="removeButton" >
+       <property name="text" >
+        <string>Remove</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="renameButton" >
+       <property name="text" >
+        <string>Rename</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="4" column="0" colspan="3" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QPushButton" name="defaultButton" >
+       <property name="text" >
+        <string>Restore All</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>61</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="applyButton" >
+       <property name="text" >
+        <string>Apply</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="1" >
+    <layout class="QVBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QToolButton" name="upButton" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Up</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="leftButton" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>&lt;-</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="rightButton" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>-></string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="downButton" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Down</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>29</width>
+         <height>16</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="2" >
+    <widget class="QListWidget" name="currentToolBarList" />
+   </item>
+   <item row="2" column="1" colspan="2" >
+    <widget class="QLabel" name="label_3" >
+     <property name="text" >
+      <string>Current Toolbar Actions</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" colspan="2" >
+    <widget class="QListWidget" name="toolBarList" />
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>newButton</tabstop>
+  <tabstop>removeButton</tabstop>
+  <tabstop>renameButton</tabstop>
+  <tabstop>toolBarList</tabstop>
+  <tabstop>upButton</tabstop>
+  <tabstop>leftButton</tabstop>
+  <tabstop>rightButton</tabstop>
+  <tabstop>downButton</tabstop>
+  <tabstop>currentToolBarList</tabstop>
+  <tabstop>defaultButton</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>applyButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
Index: trunk/src/globals.h
===================================================================
--- trunk/src/globals.h	(revision 116)
+++ trunk/src/globals.h	(revision 117)
@@ -35,4 +35,5 @@
 	#include <QtSvg>
 #endif // NOSVG && QT_VERSION >= 0x040500
+#include <QtToolBarDialog>
 
 // Version info
Index: trunk/src/mainwindow.cpp
===================================================================
--- trunk/src/mainwindow.cpp	(revision 116)
+++ trunk/src/mainwindow.cpp	(revision 117)
@@ -316,13 +316,8 @@
 {
 QPrintDialog pd(printer,this);
-#if QT_VERSION >= 0x040500
-	// No such methods in Qt < 4.5
-	pd.setOption(QAbstractPrintDialog::PrintSelection,false);
-	pd.setOption(QAbstractPrintDialog::PrintPageRange,false);
-#endif
 	if (pd.exec() != QDialog::Accepted)
 		return;
 	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-	solutionText->document()->print(printer);
+	solutionText->print(printer);
 	QApplication::restoreOverrideCursor();
 }
@@ -520,4 +515,5 @@
 	dlg->setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
 	dlg->setWindowTitle(tr("About %1").arg(QApplication::applicationName()));
+	dlg->setWindowIcon(QIcon(":/images/icons/help-about.png"));
 	dlg->setLayout(vb);
 
@@ -1233,10 +1229,10 @@
 	actionFilePrintPreview->setObjectName("actionFilePrintPreview");
 	actionFilePrintPreview->setEnabled(false);
-	actionFilePrintPreview->setIcon(QIcon(":/images/icons/document_preview.png"));
+	actionFilePrintPreview->setIcon(QIcon(":/images/icons/document-print-preview.png"));
 
 	actionFilePrint = new QAction(this);
 	actionFilePrint->setObjectName("actionFilePrint");
 	actionFilePrint->setEnabled(false);
-	actionFilePrint->setIcon(QIcon(":/images/icons/fileprint.png"));
+	actionFilePrint->setIcon(QIcon(":/images/icons/document-print.png"));
 
 	menuFile->insertAction(actionFileExit,actionFilePrintPreview);
@@ -1261,4 +1257,5 @@
 #ifdef Q_OS_WIN32
 	actionHelpCheck4Updates = new QAction(this);
+	actionHelpCheck4Updates->setIcon(QIcon(":/images/icons/system-software-update.png"));
 	actionHelpCheck4Updates->setEnabled(hasUpdater());
 	menuHelp->insertAction(actionHelpAboutQt, actionHelpCheck4Updates);
@@ -1276,4 +1273,17 @@
 	}
 #endif // Q_OS_WIN32
+
+#ifndef HANDHELD
+	toolBarManager = new QtToolBarManager;
+	toolBarManager->setMainWindow(this);
+QString cat = toolBar->windowTitle();
+	toolBarManager->addToolBar(toolBar, cat);
+#ifndef QT_NO_PRINTER
+	toolBarManager->addAction(actionFilePrintPreview, cat);
+#endif // QT_NO_PRINTER
+	toolBarManager->addAction(actionHelpContents, cat);
+	toolBarManager->addAction(actionHelpContextual, cat);
+//	toolBarManager->addAction(action, cat);
+#endif // HANDHELD
 }
 
@@ -1301,2 +1311,11 @@
 #endif // Q_OS_WIN32
 }
+
+#ifndef HANDHELD
+void MainWindow::on_actionSettingsToolbars_triggered()
+{
+QtToolBarDialog dlg(this);
+	dlg.setToolBarManager(toolBarManager);
+	dlg.exec();
+}
+#endif // HANDHELD
Index: trunk/src/mainwindow.h
===================================================================
--- trunk/src/mainwindow.h	(revision 116)
+++ trunk/src/mainwindow.h	(revision 117)
@@ -63,4 +63,7 @@
 	void actionSettingsPreferencesTriggered();
 	void actionSettingsLanguageAutodetectTriggered(bool checked);
+#ifndef HANDHELD
+	void on_actionSettingsToolbars_triggered();
+#endif // HANDHELD
 	void groupSettingsLanguageListTriggered(QAction *action);
 	void actionSettingsStyleSystemTriggered(bool checked);
@@ -91,4 +94,7 @@
 	QActionGroup *groupSettingsLanguageList;
 	QActionGroup *groupSettingsStyleList;
+#ifndef HANDHELD
+	QtToolBarManager *toolBarManager;
+#endif // HANDHELD
 #ifndef QT_NO_PRINTER
 	QPrinter *printer;
Index: trunk/src/settingsdialog.cpp
===================================================================
--- trunk/src/settingsdialog.cpp	(revision 116)
+++ trunk/src/settingsdialog.cpp	(revision 117)
@@ -35,8 +35,8 @@
 	setupUi(this);
 
-	buttonBox->button(QDialogButtonBox::Save)->setIcon(QIcon(":/images/icons/button_ok.png"));
+	buttonBox->button(QDialogButtonBox::Save)->setIcon(QIcon(":/images/icons/dialog-ok.png"));
 	buttonBox->button(QDialogButtonBox::Save)->setStatusTip(tr("Save new preferences"));
 	buttonBox->button(QDialogButtonBox::Save)->setCursor(QCursor(Qt::PointingHandCursor));
-	buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":/images/icons/button_cancel.png"));
+	buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":/images/icons/dialog-cancel.png"));
 	buttonBox->button(QDialogButtonBox::Cancel)->setStatusTip(tr("Close without saving preferences"));
 	buttonBox->button(QDialogButtonBox::Cancel)->setCursor(QCursor(Qt::PointingHandCursor));
@@ -108,5 +108,5 @@
 	imgIcon->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
 	imgIcon->setFrameShape(QFrame::NoFrame);
-	imgIcon->setPixmap(QPixmap(":/images/icons/preferences_system.png"));
+	imgIcon->setPixmap(QPixmap(":/images/icons/preferences-system.png"));
 	imgIcon->setStyleSheet("background-color: #0080C0; padding-top: 11px;");
 	imgIcon->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
Index: trunk/tspsg.pro
===================================================================
--- trunk/tspsg.pro	(revision 116)
+++ trunk/tspsg.pro	(revision 117)
@@ -35,6 +35,12 @@
 #REVISION = 100
 REVISION = $$system(svnversion)
+REVISION = $$replace(REVISION,":","")
 REVISION = $$replace(REVISION,"M","")
-VERSION = $$sprintf("%1.%2.%3.%4",$$BUILD_VERSION_MAJOR,$$BUILD_VERSION_MINOR,$$BUILD_RELEASE,$$REVISION)
+#VERSION = $$sprintf("%1.%2.%3.%4",$$BUILD_VERSION_MAJOR,$$BUILD_VERSION_MINOR,$$BUILD_RELEASE,$$REVISION)
+win32-msvc* {
+	VERSION = $$sprintf("%1.%2",$$BUILD_VERSION_MAJOR,$$BUILD_VERSION_MINOR)
+} else {
+	VERSION = $$sprintf("%1.%2.%3.%4",$$BUILD_VERSION_MAJOR,$$BUILD_VERSION_MINOR,$$BUILD_RELEASE,$$REVISION)
+}
 
 DEFINES += BUILD_VERSION_MAJOR=$$BUILD_VERSION_MAJOR \
@@ -76,4 +82,7 @@
 UI_DIR = ./tmp
 
+# Include 3rd party libraries
+include(src/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.pri)
+
 # Include file(s)
 include(tspsg.pri)
Index: trunk/ui/mainwindow.ui
===================================================================
--- trunk/ui/mainwindow.ui	(revision 116)
+++ trunk/ui/mainwindow.ui	(revision 117)
@@ -162,5 +162,5 @@
          <property name="icon">
           <iconset resource="../resources/tspsg.qrc">
-           <normaloff>:/images/icons/button_ok.png</normaloff>:/images/icons/button_ok.png</iconset>
+           <normaloff>:/images/icons/dialog-ok.png</normaloff>:/images/icons/dialog-ok.png</iconset>
          </property>
         </widget>
@@ -212,5 +212,5 @@
          <property name="icon">
           <iconset resource="../resources/tspsg.qrc">
-           <normaloff>:/images/icons/filesaveas.png</normaloff>:/images/icons/filesaveas.png</iconset>
+           <normaloff>:/images/icons/document-save-as.png</normaloff>:/images/icons/document-save-as.png</iconset>
          </property>
         </widget>
@@ -242,5 +242,5 @@
          <property name="icon">
           <iconset resource="../resources/tspsg.qrc">
-           <normaloff>:/images/icons/back.png</normaloff>:/images/icons/back.png</iconset>
+           <normaloff>:/images/icons/go-previous.png</normaloff>:/images/icons/go-previous.png</iconset>
          </property>
         </widget>
@@ -275,5 +275,5 @@
      <property name="icon">
       <iconset resource="../resources/tspsg.qrc">
-       <normaloff>:/images/icons/filesaveas.png</normaloff>:/images/icons/filesaveas.png</iconset>
+       <normaloff>:/images/icons/document-save-as.png</normaloff>:/images/icons/document-save-as.png</iconset>
      </property>
      <addaction name="actionFileSaveAsTask"/>
@@ -303,5 +303,5 @@
      <property name="icon">
       <iconset resource="../resources/tspsg.qrc">
-       <normaloff>:/images/icons/locale.png</normaloff>:/images/icons/locale.png</iconset>
+       <normaloff>:/images/icons/preferences-desktop-locale.png</normaloff>:/images/icons/preferences-desktop-locale.png</iconset>
      </property>
      <addaction name="actionSettingsLanguageAutodetect"/>
@@ -313,7 +313,13 @@
       <string>Style</string>
      </property>
+     <property name="icon">
+      <iconset resource="../resources/tspsg.qrc">
+       <normaloff>:/images/icons/preferences-desktop-theme.png</normaloff>:/images/icons/preferences-desktop-theme.png</iconset>
+     </property>
     </widget>
     <addaction name="menuSettingsLanguage"/>
     <addaction name="menuSettingsStyle"/>
+    <addaction name="actionSettingsToolbars"/>
+    <addaction name="separator"/>
     <addaction name="actionSettingsPreferences"/>
    </widget>
@@ -370,5 +376,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/filenew.png</normaloff>:/images/icons/filenew.png</iconset>
+     <normaloff>:/images/icons/document-new.png</normaloff>:/images/icons/document-new.png</iconset>
    </property>
    <property name="text">
@@ -388,5 +394,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/fileopen.png</normaloff>:/images/icons/fileopen.png</iconset>
+     <normaloff>:/images/icons/document-open.png</normaloff>:/images/icons/document-open.png</iconset>
    </property>
    <property name="text">
@@ -406,5 +412,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/preferences_system.png</normaloff>:/images/icons/preferences_system.png</iconset>
+     <normaloff>:/images/icons/preferences-system.png</normaloff>:/images/icons/preferences-system.png</iconset>
    </property>
    <property name="text">
@@ -421,5 +427,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/contents.png</normaloff>:/images/icons/contents.png</iconset>
+     <normaloff>:/images/icons/help-contents.png</normaloff>:/images/icons/help-contents.png</iconset>
    </property>
    <property name="text">
@@ -439,5 +445,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/help_browser.png</normaloff>:/images/icons/help_browser.png</iconset>
+     <normaloff>:/images/icons/help-contextual.png</normaloff>:/images/icons/help-contextual.png</iconset>
    </property>
    <property name="text">
@@ -454,5 +460,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/help_about.png</normaloff>:/images/icons/help_about.png</iconset>
+     <normaloff>:/images/icons/help-about.png</normaloff>:/images/icons/help-about.png</iconset>
    </property>
    <property name="text">
@@ -466,5 +472,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/exit.png</normaloff>:/images/icons/exit.png</iconset>
+     <normaloff>:/images/icons/application-exit.png</normaloff>:/images/icons/application-exit.png</iconset>
    </property>
    <property name="text">
@@ -520,5 +526,5 @@
    <property name="icon">
     <iconset resource="../resources/tspsg.qrc">
-     <normaloff>:/images/icons/filesave.png</normaloff>:/images/icons/filesave.png</iconset>
+     <normaloff>:/images/icons/document-save.png</normaloff>:/images/icons/document-save.png</iconset>
    </property>
    <property name="text">
@@ -559,4 +565,16 @@
    <property name="statusTip">
     <string>Automatically choose the most appropriate style</string>
+   </property>
+  </action>
+  <action name="actionSettingsToolbars">
+   <property name="icon">
+    <iconset resource="../resources/tspsg.qrc">
+     <normaloff>:/images/icons/configure-toolbars.png</normaloff>:/images/icons/configure-toolbars.png</iconset>
+   </property>
+   <property name="text">
+    <string>Toolbars...</string>
+   </property>
+   <property name="statusTip">
+    <string>Customize toolbars</string>
    </property>
   </action>
Index: trunk/ui/settingsdialog.ui
===================================================================
--- trunk/ui/settingsdialog.ui	(revision 116)
+++ trunk/ui/settingsdialog.ui	(revision 117)
@@ -9,539 +9,523 @@
   <property name="windowIcon">
    <iconset resource="../resources/tspsg.qrc">
-	<normaloff>:/images/icons/preferences_system.png</normaloff>:/images/icons/preferences_system.png</iconset>
+    <normaloff>:/images/icons/preferences-system.png</normaloff>:/images/icons/preferences-system.png</iconset>
   </property>
   <widget class="QWidget" name="bgGrey" native="true">
-   <property name="geometry">
-	<rect>
-	 <x>0</x>
-	 <y>0</y>
-	 <width>197</width>
-	 <height>37</height>
-	</rect>
-   </property>
    <property name="sizePolicy">
-	<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-	 <horstretch>0</horstretch>
-	 <verstretch>0</verstretch>
-	</sizepolicy>
+    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
    </property>
    <property name="autoFillBackground">
-	<bool>true</bool>
+    <bool>true</bool>
    </property>
    <layout class="QVBoxLayout" name="_2">
-	<property name="spacing">
-	 <number>0</number>
-	</property>
-	<property name="margin">
-	 <number>0</number>
-	</property>
-	<item>
-	 <widget class="Line" name="lineHorizontal">
-	  <property name="maximumSize">
-	   <size>
-		<width>16777215</width>
-		<height>2</height>
-	   </size>
-	  </property>
-	  <property name="frameShadow">
-	   <enum>QFrame::Plain</enum>
-	  </property>
-	  <property name="lineWidth">
-	   <number>2</number>
-	  </property>
-	  <property name="orientation">
-	   <enum>Qt::Horizontal</enum>
-	  </property>
-	 </widget>
-	</item>
-	<item>
-	 <layout class="QHBoxLayout" name="buttons">
-	  <property name="spacing">
-	   <number>6</number>
-	  </property>
-	  <property name="margin">
-	   <number>6</number>
-	  </property>
-	  <item>
-	   <widget class="QToolButton" name="buttonHelp">
-		<property name="enabled">
-		 <bool>false</bool>
-		</property>
-		<property name="cursor">
-		 <cursorShape>PointingHandCursor</cursorShape>
-		</property>
-		<property name="toolTip">
-		 <string>Help</string>
-		</property>
-		<property name="statusTip">
-		 <string>Get preferences help</string>
-		</property>
-		<property name="text">
-		 <string>Help</string>
-		</property>
-		<property name="icon">
-		 <iconset resource="../resources/tspsg.qrc">
-		  <normaloff>:/images/icons/help_hint.png</normaloff>:/images/icons/help_hint.png</iconset>
-		</property>
-		<property name="autoRaise">
-		 <bool>true</bool>
-		</property>
-	   </widget>
-	  </item>
-	  <item>
-	   <widget class="QDialogButtonBox" name="buttonBox">
-		<property name="standardButtons">
-		 <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
-		</property>
-	   </widget>
-	  </item>
-	 </layout>
-	</item>
+    <property name="spacing">
+     <number>0</number>
+    </property>
+    <property name="margin">
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="Line" name="lineHorizontal">
+      <property name="maximumSize">
+       <size>
+        <width>16777215</width>
+        <height>2</height>
+       </size>
+      </property>
+      <property name="frameShadow">
+       <enum>QFrame::Plain</enum>
+      </property>
+      <property name="lineWidth">
+       <number>2</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="buttons">
+      <property name="spacing">
+       <number>6</number>
+      </property>
+      <property name="margin">
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="buttonHelp">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="toolTip">
+         <string>Help</string>
+        </property>
+        <property name="statusTip">
+         <string>Get preferences help</string>
+        </property>
+        <property name="text">
+         <string>Help</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources/tspsg.qrc">
+          <normaloff>:/images/icons/help-hint.png</normaloff>:/images/icons/help-hint.png</iconset>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QDialogButtonBox" name="buttonBox">
+        <property name="standardButtons">
+         <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
    </layout>
   </widget>
   <widget class="QWidget" name="bgWhite" native="true">
-   <property name="geometry">
-	<rect>
-	 <x>0</x>
-	 <y>0</y>
-	 <width>226</width>
-	 <height>253</height>
-	</rect>
-   </property>
    <property name="autoFillBackground">
-	<bool>true</bool>
+    <bool>true</bool>
    </property>
    <layout class="QHBoxLayout" name="_3">
-	<item>
-	 <widget class="QTabWidget" name="tabWidget">
-	  <widget class="QWidget" name="tabGeneral">
-	   <attribute name="title">
-		<string>General</string>
-	   </attribute>
-	   <attribute name="toolTip">
-		<string>General TSPSG settings</string>
-	   </attribute>
-	   <layout class="QVBoxLayout" name="_4">
-		<item>
-		 <widget class="QCheckBox" name="cbAutosize">
-		  <property name="cursor">
-		   <cursorShape>PointingHandCursor</cursorShape>
-		  </property>
-		  <property name="statusTip">
-		   <string>Automatically resize rows and columns to their contents</string>
-		  </property>
-		  <property name="text">
-		   <string>Autosize of rows and columns</string>
-		  </property>
-		 </widget>
-		</item>
-		<item>
-		 <widget class="QCheckBox" name="cbUseNativeDialogs">
-		  <property name="cursor">
-		   <cursorShape>PointingHandCursor</cursorShape>
-		  </property>
-		  <property name="statusTip">
-		   <string>Use native File Open and File Save dialogs (uncheck to use Qt's Dialogs)</string>
-		  </property>
-		  <property name="text">
-		   <string>Use native file dialogs</string>
-		  </property>
-		 </widget>
-		</item>
-		<item>
-		 <spacer name="spacer">
-		  <property name="orientation">
-		   <enum>Qt::Vertical</enum>
-		  </property>
-		  <property name="sizeHint" stdset="0">
-		   <size>
-			<width>0</width>
-			<height>0</height>
-		   </size>
-		  </property>
-		 </spacer>
-		</item>
-	   </layout>
-	  </widget>
-	  <widget class="QWidget" name="tabTask">
-	   <attribute name="title">
-		<string>Task</string>
-	   </attribute>
-	   <attribute name="toolTip">
-		<string>Task generation and solving settings</string>
-	   </attribute>
-	   <layout class="QVBoxLayout" name="_9">
-		<item>
-		 <layout class="QFormLayout" name="_5">
-		  <property name="fieldGrowthPolicy">
-		   <enum>QFormLayout::ExpandingFieldsGrow</enum>
-		  </property>
-		  <item row="0" column="0">
-		   <widget class="QLabel" name="labelFractionalAccuracy">
-			<property name="text">
-			 <string>Fractional accuracy:</string>
-			</property>
-			<property name="buddy">
-			 <cstring>spinFractionalAccuracy</cstring>
-			</property>
-		   </widget>
-		  </item>
-		  <item row="0" column="1">
-		   <widget class="QSpinBox" name="spinFractionalAccuracy">
-			<property name="cursor">
-			 <cursorShape>PointingHandCursor</cursorShape>
-			</property>
-			<property name="statusTip">
-			 <string>Accuracy of the fractional values (in decimal places)</string>
-			</property>
-			<property name="maximum">
-			 <number>6</number>
-			</property>
-		   </widget>
-		  </item>
-		 </layout>
-		</item>
-		<item>
-		 <widget class="QCheckBox" name="cbSymmetricMode">
-		  <property name="cursor">
-		   <cursorShape>PointingHandCursor</cursorShape>
-		  </property>
-		  <property name="statusTip">
-		   <string>In this mode the cost of travel from city 1 to city 2 and vice versa is the same</string>
-		  </property>
-		  <property name="text">
-		   <string>Symmetric mode</string>
-		  </property>
-		 </widget>
-		</item>
-		<item>
-		 <widget class="QGroupBox" name="gbTaskGeneration">
-		  <property name="title">
-		   <string>Task generation</string>
-		  </property>
-		  <layout class="QVBoxLayout" name="_7">
-		   <item>
-			<layout class="QFormLayout" name="_8">
-			 <property name="fieldGrowthPolicy">
-			  <enum>QFormLayout::ExpandingFieldsGrow</enum>
-			 </property>
-			 <item row="0" column="0">
-			  <widget class="QLabel" name="labelRandMin">
-			   <property name="text">
-				<string>Minimal random:</string>
-			   </property>
-			   <property name="buddy">
-				<cstring>spinRandMin</cstring>
-			   </property>
-			  </widget>
-			 </item>
-			 <item row="0" column="1">
-			  <widget class="QSpinBox" name="spinRandMin">
-			   <property name="cursor">
-				<cursorShape>PointingHandCursor</cursorShape>
-			   </property>
-			   <property name="statusTip">
-				<string>Minimum for random number generation</string>
-			   </property>
-			  </widget>
-			 </item>
-			 <item row="1" column="0">
-			  <widget class="QLabel" name="labelRandMax">
-			   <property name="text">
-				<string>Maximal random:</string>
-			   </property>
-			   <property name="buddy">
-				<cstring>spinRandMax</cstring>
-			   </property>
-			  </widget>
-			 </item>
-			 <item row="1" column="1">
-			  <widget class="QSpinBox" name="spinRandMax">
-			   <property name="cursor">
-				<cursorShape>PointingHandCursor</cursorShape>
-			   </property>
-			   <property name="statusTip">
-				<string>Maximum for random number generation</string>
-			   </property>
-			  </widget>
-			 </item>
-			</layout>
-		   </item>
-		   <item>
-			<widget class="QCheckBox" name="cbFractionalRandom">
-			 <property name="cursor">
-			  <cursorShape>PointingHandCursor</cursorShape>
-			 </property>
-			 <property name="statusTip">
-			  <string>Generate fractional random values with the Fractional accuracy</string>
-			 </property>
-			 <property name="text">
-			  <string>Fractional random values</string>
-			 </property>
-			</widget>
-		   </item>
-		  </layout>
-		 </widget>
-		</item>
-		<item>
-		 <spacer name="spacer_2">
-		  <property name="orientation">
-		   <enum>Qt::Vertical</enum>
-		  </property>
-		  <property name="sizeHint" stdset="0">
-		   <size>
-			<width>10</width>
-			<height>0</height>
-		   </size>
-		  </property>
-		 </spacer>
-		</item>
-	   </layout>
-	  </widget>
-	  <widget class="QWidget" name="tabOutput">
-	   <attribute name="title">
-		<string>Output</string>
-	   </attribute>
-	   <attribute name="toolTip">
-		<string>Solution output settings</string>
-	   </attribute>
-	   <layout class="QVBoxLayout" name="_6">
-		<item>
-		 <widget class="QCheckBox" name="cbShowGraph">
-		  <property name="cursor">
-		   <cursorShape>PointingHandCursor</cursorShape>
-		  </property>
-		  <property name="statusTip">
-		   <string>Show graphical representation of the solution</string>
-		  </property>
-		  <property name="text">
-		   <string>Show solution graph</string>
-		  </property>
-		 </widget>
-		</item>
-		<item>
-		 <layout class="QHBoxLayout" name="_10">
-		  <property name="spacing">
-		   <number>5</number>
-		  </property>
-		  <item>
-		   <spacer name="spacer_7">
-			<property name="orientation">
-			 <enum>Qt::Horizontal</enum>
-			</property>
-			<property name="sizeType">
-			 <enum>QSizePolicy::Fixed</enum>
-			</property>
-			<property name="sizeHint" stdset="0">
-			 <size>
-			  <width>10</width>
-			  <height>0</height>
-			 </size>
-			</property>
-		   </spacer>
-		  </item>
-		  <item>
-		   <widget class="QLabel" name="labelGraphImageFormat">
-			<property name="text">
-			 <string>Save solution graph as</string>
-			</property>
-			<property name="buddy">
-			 <cstring>comboGraphImageFormat</cstring>
-			</property>
-		   </widget>
-		  </item>
-		  <item>
-		   <widget class="QComboBox" name="comboGraphImageFormat">
-			<property name="cursor">
-			 <cursorShape>PointingHandCursor</cursorShape>
-			</property>
-			<property name="statusTip">
-			 <string>What image format to use for graph when saving solution as HTML</string>
-			</property>
-		   </widget>
-		  </item>
-		  <item>
-		   <spacer name="horizontalSpacer">
-			<property name="orientation">
-			 <enum>Qt::Horizontal</enum>
-			</property>
-			<property name="sizeHint" stdset="0">
-			 <size>
-			  <width>0</width>
-			  <height>0</height>
-			 </size>
-			</property>
-		   </spacer>
-		  </item>
-		 </layout>
-		</item>
-		<item>
-		 <widget class="QCheckBox" name="cbShowMatrix">
-		  <property name="cursor">
-		   <cursorShape>PointingHandCursor</cursorShape>
-		  </property>
-		  <property name="statusTip">
-		   <string>Show solution steps' matrices for every solution step</string>
-		  </property>
-		  <property name="text">
-		   <string>Show solution steps' matrices</string>
-		  </property>
-		 </widget>
-		</item>
-		<item>
-		 <layout class="QHBoxLayout" name="_12">
-		  <property name="spacing">
-		   <number>0</number>
-		  </property>
-		  <item>
-		   <spacer name="spacer_3">
-			<property name="orientation">
-			 <enum>Qt::Horizontal</enum>
-			</property>
-			<property name="sizeType">
-			 <enum>QSizePolicy::Fixed</enum>
-			</property>
-			<property name="sizeHint" stdset="0">
-			 <size>
-			  <width>10</width>
-			  <height>0</height>
-			 </size>
-			</property>
-		   </spacer>
-		  </item>
-		  <item>
-		   <widget class="QCheckBox" name="cbCitiesLimit">
-			<property name="cursor">
-			 <cursorShape>PointingHandCursor</cursorShape>
-			</property>
-			<property name="statusTip">
-			 <string>Show or hide solution steps' matrices based on number of cities in the task</string>
-			</property>
-			<property name="text">
-			 <string>Only when &lt;=</string>
-			</property>
-		   </widget>
-		  </item>
-		  <item>
-		   <widget class="QSpinBox" name="spinCitiesLimit">
-			<property name="cursor">
-			 <cursorShape>PointingHandCursor</cursorShape>
-			</property>
-			<property name="statusTip">
-			 <string>Maximum number of cities to show solution steps' matrices</string>
-			</property>
-			<property name="suffix">
-			 <string comment="Don't forget a space at the beginning!"> cities</string>
-			</property>
-			<property name="minimum">
-			 <number>1</number>
-			</property>
-		   </widget>
-		  </item>
-		  <item>
-		   <spacer name="spacer_4">
-			<property name="orientation">
-			 <enum>Qt::Horizontal</enum>
-			</property>
-			<property name="sizeHint" stdset="0">
-			 <size>
-			  <width>0</width>
-			  <height>0</height>
-			 </size>
-			</property>
-		   </spacer>
-		  </item>
-		 </layout>
-		</item>
-		<item>
-		 <widget class="QCheckBox" name="cbScrollToEnd">
-		  <property name="cursor">
-		   <cursorShape>PointingHandCursor</cursorShape>
-		  </property>
-		  <property name="statusTip">
-		   <string>Scroll to the end of solution output after solving</string>
-		  </property>
-		  <property name="text">
-		   <string>Scroll to solution end</string>
-		  </property>
-		 </widget>
-		</item>
-		<item>
-		 <layout class="QHBoxLayout" name="_11">
-		  <item>
-		   <widget class="QGroupBox" name="groupOutput">
-			<property name="title">
-			 <string>Output font settings</string>
-			</property>
-			<layout class="QHBoxLayout" name="_13">
-			 <item>
-			  <widget class="QPushButton" name="buttonFont">
-			   <property name="cursor">
-				<cursorShape>PointingHandCursor</cursorShape>
-			   </property>
-			   <property name="statusTip">
-				<string>Font face for solution output</string>
-			   </property>
-			   <property name="text">
-				<string>&amp;Font...</string>
-			   </property>
-			   <property name="icon">
-				<iconset resource="../resources/tspsg.qrc">
-				 <normaloff>:/images/icons/fonts.png</normaloff>:/images/icons/fonts.png</iconset>
-			   </property>
-			  </widget>
-			 </item>
-			 <item>
-			  <widget class="QPushButton" name="buttonColor">
-			   <property name="cursor">
-				<cursorShape>PointingHandCursor</cursorShape>
-			   </property>
-			   <property name="statusTip">
-				<string>Font color for solution output</string>
-			   </property>
-			   <property name="text">
-				<string>&amp;Color...</string>
-			   </property>
-			   <property name="icon">
-				<iconset resource="../resources/tspsg.qrc">
-				 <normaloff>:/images/icons/color_line.png</normaloff>:/images/icons/color_line.png</iconset>
-			   </property>
-			  </widget>
-			 </item>
-			 <item>
-			  <spacer name="spacer_5">
-			   <property name="orientation">
-				<enum>Qt::Horizontal</enum>
-			   </property>
-			   <property name="sizeHint" stdset="0">
-				<size>
-				 <width>0</width>
-				 <height>0</height>
-				</size>
-			   </property>
-			  </spacer>
-			 </item>
-			</layout>
-		   </widget>
-		  </item>
-		 </layout>
-		</item>
-		<item>
-		 <spacer name="spacer_6">
-		  <property name="orientation">
-		   <enum>Qt::Vertical</enum>
-		  </property>
-		  <property name="sizeHint" stdset="0">
-		   <size>
-			<width>0</width>
-			<height>0</height>
-		   </size>
-		  </property>
-		 </spacer>
-		</item>
-	   </layout>
-	  </widget>
-	 </widget>
-	</item>
+    <item>
+     <widget class="QTabWidget" name="tabWidget">
+      <widget class="QWidget" name="tabGeneral">
+       <attribute name="title">
+        <string>General</string>
+       </attribute>
+       <attribute name="toolTip">
+        <string>General TSPSG settings</string>
+       </attribute>
+       <layout class="QVBoxLayout" name="_4">
+        <item>
+         <widget class="QCheckBox" name="cbAutosize">
+          <property name="cursor">
+           <cursorShape>PointingHandCursor</cursorShape>
+          </property>
+          <property name="statusTip">
+           <string>Automatically resize rows and columns to their contents</string>
+          </property>
+          <property name="text">
+           <string>Autosize of rows and columns</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="cbUseNativeDialogs">
+          <property name="cursor">
+           <cursorShape>PointingHandCursor</cursorShape>
+          </property>
+          <property name="statusTip">
+           <string>Use native File Open and File Save dialogs (uncheck to use Qt's Dialogs)</string>
+          </property>
+          <property name="text">
+           <string>Use native file dialogs</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="spacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>0</width>
+            <height>0</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tabTask">
+       <attribute name="title">
+        <string>Task</string>
+       </attribute>
+       <attribute name="toolTip">
+        <string>Task generation and solving settings</string>
+       </attribute>
+       <layout class="QVBoxLayout" name="_9">
+        <item>
+         <layout class="QFormLayout" name="_5">
+          <property name="fieldGrowthPolicy">
+           <enum>QFormLayout::ExpandingFieldsGrow</enum>
+          </property>
+          <item row="0" column="0">
+           <widget class="QLabel" name="labelFractionalAccuracy">
+            <property name="text">
+             <string>Fractional accuracy:</string>
+            </property>
+            <property name="buddy">
+             <cstring>spinFractionalAccuracy</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="QSpinBox" name="spinFractionalAccuracy">
+            <property name="cursor">
+             <cursorShape>PointingHandCursor</cursorShape>
+            </property>
+            <property name="statusTip">
+             <string>Accuracy of the fractional values (in decimal places)</string>
+            </property>
+            <property name="maximum">
+             <number>6</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="cbSymmetricMode">
+          <property name="cursor">
+           <cursorShape>PointingHandCursor</cursorShape>
+          </property>
+          <property name="statusTip">
+           <string>In this mode the cost of travel from city 1 to city 2 and vice versa is the same</string>
+          </property>
+          <property name="text">
+           <string>Symmetric mode</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="gbTaskGeneration">
+          <property name="title">
+           <string>Task generation</string>
+          </property>
+          <layout class="QVBoxLayout" name="_7">
+           <item>
+            <layout class="QFormLayout" name="_8">
+             <property name="fieldGrowthPolicy">
+              <enum>QFormLayout::ExpandingFieldsGrow</enum>
+             </property>
+             <item row="0" column="0">
+              <widget class="QLabel" name="labelRandMin">
+               <property name="text">
+                <string>Minimal random:</string>
+               </property>
+               <property name="buddy">
+                <cstring>spinRandMin</cstring>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QSpinBox" name="spinRandMin">
+               <property name="cursor">
+                <cursorShape>PointingHandCursor</cursorShape>
+               </property>
+               <property name="statusTip">
+                <string>Minimum for random number generation</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="0">
+              <widget class="QLabel" name="labelRandMax">
+               <property name="text">
+                <string>Maximal random:</string>
+               </property>
+               <property name="buddy">
+                <cstring>spinRandMax</cstring>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QSpinBox" name="spinRandMax">
+               <property name="cursor">
+                <cursorShape>PointingHandCursor</cursorShape>
+               </property>
+               <property name="statusTip">
+                <string>Maximum for random number generation</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <widget class="QCheckBox" name="cbFractionalRandom">
+             <property name="cursor">
+              <cursorShape>PointingHandCursor</cursorShape>
+             </property>
+             <property name="statusTip">
+              <string>Generate fractional random values with the Fractional accuracy</string>
+             </property>
+             <property name="text">
+              <string>Fractional random values</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="spacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>10</width>
+            <height>0</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tabOutput">
+       <attribute name="title">
+        <string>Output</string>
+       </attribute>
+       <attribute name="toolTip">
+        <string>Solution output settings</string>
+       </attribute>
+       <layout class="QVBoxLayout" name="_6">
+        <item>
+         <widget class="QCheckBox" name="cbShowGraph">
+          <property name="cursor">
+           <cursorShape>PointingHandCursor</cursorShape>
+          </property>
+          <property name="statusTip">
+           <string>Show graphical representation of the solution</string>
+          </property>
+          <property name="text">
+           <string>Show solution graph</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="_10">
+          <property name="spacing">
+           <number>5</number>
+          </property>
+          <item>
+           <spacer name="spacer_7">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>10</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QLabel" name="labelGraphImageFormat">
+            <property name="text">
+             <string>Save solution graph as</string>
+            </property>
+            <property name="buddy">
+             <cstring>comboGraphImageFormat</cstring>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="comboGraphImageFormat">
+            <property name="cursor">
+             <cursorShape>PointingHandCursor</cursorShape>
+            </property>
+            <property name="statusTip">
+             <string>What image format to use for graph when saving solution as HTML</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="cbShowMatrix">
+          <property name="cursor">
+           <cursorShape>PointingHandCursor</cursorShape>
+          </property>
+          <property name="statusTip">
+           <string>Show solution steps' matrices for every solution step</string>
+          </property>
+          <property name="text">
+           <string>Show solution steps' matrices</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="_12">
+          <property name="spacing">
+           <number>0</number>
+          </property>
+          <item>
+           <spacer name="spacer_3">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>10</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="cbCitiesLimit">
+            <property name="cursor">
+             <cursorShape>PointingHandCursor</cursorShape>
+            </property>
+            <property name="statusTip">
+             <string>Show or hide solution steps' matrices based on number of cities in the task</string>
+            </property>
+            <property name="text">
+             <string>Only when &lt;=</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="spinCitiesLimit">
+            <property name="cursor">
+             <cursorShape>PointingHandCursor</cursorShape>
+            </property>
+            <property name="statusTip">
+             <string>Maximum number of cities to show solution steps' matrices</string>
+            </property>
+            <property name="suffix">
+             <string comment="Don't forget a space at the beginning!"> cities</string>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="spacer_4">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="cbScrollToEnd">
+          <property name="cursor">
+           <cursorShape>PointingHandCursor</cursorShape>
+          </property>
+          <property name="statusTip">
+           <string>Scroll to the end of solution output after solving</string>
+          </property>
+          <property name="text">
+           <string>Scroll to solution end</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="_11">
+          <item>
+           <widget class="QGroupBox" name="groupOutput">
+            <property name="title">
+             <string>Output font settings</string>
+            </property>
+            <layout class="QHBoxLayout" name="_13">
+             <item>
+              <widget class="QPushButton" name="buttonFont">
+               <property name="cursor">
+                <cursorShape>PointingHandCursor</cursorShape>
+               </property>
+               <property name="statusTip">
+                <string>Font face for solution output</string>
+               </property>
+               <property name="text">
+                <string>&amp;Font...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../resources/tspsg.qrc">
+                 <normaloff>:/images/icons/preferences-desktop-font.png</normaloff>:/images/icons/preferences-desktop-font.png</iconset>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QPushButton" name="buttonColor">
+               <property name="cursor">
+                <cursorShape>PointingHandCursor</cursorShape>
+               </property>
+               <property name="statusTip">
+                <string>Font color for solution output</string>
+               </property>
+               <property name="text">
+                <string>&amp;Color...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../resources/tspsg.qrc">
+                 <normaloff>:/images/icons/format-text-color.png</normaloff>:/images/icons/format-text-color.png</iconset>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="spacer_5">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>0</width>
+                 <height>0</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <spacer name="spacer_6">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>0</width>
+            <height>0</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
    </layout>
   </widget>
@@ -557,12 +541,12 @@
    <slot>accept()</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>190</x>
-	 <y>30</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>306</x>
-	 <y>231</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>190</x>
+     <y>30</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>306</x>
+     <y>231</y>
+    </hint>
    </hints>
   </connection>
@@ -573,12 +557,12 @@
    <slot>reject()</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>190</x>
-	 <y>30</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>262</x>
-	 <y>245</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>190</x>
+     <y>30</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>262</x>
+     <y>245</y>
+    </hint>
    </hints>
   </connection>
@@ -589,12 +573,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>91</x>
-	 <y>107</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>113</x>
-	 <y>132</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>91</x>
+     <y>107</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>113</x>
+     <y>132</y>
+    </hint>
    </hints>
   </connection>
@@ -605,12 +589,12 @@
    <slot>setChecked(bool)</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>91</x>
-	 <y>107</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>113</x>
-	 <y>132</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>91</x>
+     <y>107</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>113</x>
+     <y>132</y>
+    </hint>
    </hints>
   </connection>
@@ -621,12 +605,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>113</x>
-	 <y>132</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>183</x>
-	 <y>134</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>113</x>
+     <y>132</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>183</x>
+     <y>134</y>
+    </hint>
    </hints>
   </connection>
@@ -637,12 +621,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>113</x>
-	 <y>48</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>72</x>
-	 <y>73</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>113</x>
+     <y>48</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>72</x>
+     <y>73</y>
+    </hint>
    </hints>
   </connection>
@@ -653,12 +637,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
-	<hint type="sourcelabel">
-	 <x>113</x>
-	 <y>48</y>
-	</hint>
-	<hint type="destinationlabel">
-	 <x>149</x>
-	 <y>73</y>
-	</hint>
+    <hint type="sourcelabel">
+     <x>113</x>
+     <y>48</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>149</x>
+     <y>73</y>
+    </hint>
    </hints>
   </connection>
