[guidata] 01/03: Imported Upstream version 1.7.0~b5

Frédéric-Emmanuel Picca picca at moszumanska.debian.org
Tue Oct 6 12:22:21 UTC 2015


This is an automated email from the git hooks/post-receive script.

picca pushed a commit to branch master
in repository guidata.

commit 0e186e3cc9b70bc33f2d611957f8d552178ec83a
Author: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
Date:   Mon Oct 5 13:59:27 2015 +0200

    Imported Upstream version 1.7.0~b5
---
 Licence_CeCILL_V2-en.txt              | 1012 +++++++++++++++----------------
 MANIFEST.in                           |    3 +-
 PKG-INFO                              |    2 +-
 changelog                             |    2 +-
 doc/conf.py                           |    4 +-
 doc/development.rst                   |   25 +-
 doc/index.rst                         |    2 +-
 doc/installation.rst                  |    9 +-
 doc/reference.rst                     |   26 -
 doc/reference/configtools.rst         |    2 +
 doc/reference/dataset.rst             |    2 +
 doc/reference/disthelpers.rst         |    2 +
 doc/reference/index.rst               |   14 +
 doc/reference/qthelpers.rst           |    2 +
 doc/reference/userconfig.rst          |    2 +
 doc/reference/utils.rst               |    2 +
 guidata-tests                         |    4 +-
 guidata.egg-info/PKG-INFO             |    2 +-
 guidata.egg-info/SOURCES.txt          |    8 +-
 guidata/__init__.py                   |   10 +-
 guidata/dataset/__init__.py           |    8 +-
 guidata/dataset/dataitems.py          |  101 ++--
 guidata/dataset/datatypes.py          |    3 +-
 guidata/dataset/qtitemwidgets.py      |   12 +-
 guidata/dataset/qtwidgets.py          |    5 +
 guidata/disthelpers.py                |   66 +-
 guidata/images/apply.png              |  Bin 612 -> 785 bytes
 guidata/images/arredit.png            |  Bin 873 -> 1123 bytes
 guidata/images/busy.png               |  Bin 3186 -> 721 bytes
 guidata/images/cell_edit.png          |  Bin 3012 -> 689 bytes
 guidata/images/copy.png               |  Bin 879 -> 830 bytes
 guidata/images/delete.png             |  Bin 522 -> 722 bytes
 guidata/images/dictedit.png           |  Bin 629 -> 911 bytes
 guidata/images/edit.png               |  Bin 3331 -> 929 bytes
 guidata/images/editors/edit.png       |  Bin 3331 -> 929 bytes
 guidata/images/editors/edit_add.png   |  Bin 3329 -> 1001 bytes
 guidata/images/editors/editcopy.png   |  Bin 3356 -> 1048 bytes
 guidata/images/editors/editdelete.png |  Bin 3653 -> 1453 bytes
 guidata/images/editors/editpaste.png  |  Bin 3529 -> 1295 bytes
 guidata/images/editors/fileimport.png |  Bin 2076 -> 2248 bytes
 guidata/images/editors/filesave.png   |  Bin 970 -> 1144 bytes
 guidata/images/editors/imshow.png     |  Bin 3206 -> 727 bytes
 guidata/images/editors/insert.png     |  Bin 3097 -> 525 bytes
 guidata/images/editors/plot.png       |  Bin 3165 -> 515 bytes
 guidata/images/editors/rename.png     |  Bin 3012 -> 689 bytes
 guidata/images/exit.png               |  Bin 876 -> 1164 bytes
 guidata/images/expander_down.png      |  Bin 1077 -> 1322 bytes
 guidata/images/expander_right.png     |  Bin 1057 -> 432 bytes
 guidata/images/file.png               |  Bin 425 -> 530 bytes
 guidata/images/fileclose.png          |  Bin 3714 -> 1424 bytes
 guidata/images/fileimport.png         |  Bin 1383 -> 1556 bytes
 guidata/images/filenew.png            |  Bin 347 -> 463 bytes
 guidata/images/fileopen.png           |  Bin 964 -> 1539 bytes
 guidata/images/filesave.png           |  Bin 970 -> 1144 bytes
 guidata/images/filesaveas.png         |  Bin 1264 -> 1443 bytes
 guidata/images/filetypes/doc.png      |  Bin 4072 -> 1601 bytes
 guidata/images/filetypes/gif.png      |  Bin 4045 -> 1512 bytes
 guidata/images/filetypes/html.png     |  Bin 4368 -> 1848 bytes
 guidata/images/filetypes/jpg.png      |  Bin 4045 -> 1512 bytes
 guidata/images/filetypes/pdf.png      |  Bin 4073 -> 1543 bytes
 guidata/images/filetypes/png.png      |  Bin 4045 -> 1512 bytes
 guidata/images/filetypes/pps.png      |  Bin 3793 -> 1439 bytes
 guidata/images/filetypes/ps.png       |  Bin 3760 -> 1428 bytes
 guidata/images/filetypes/tar.png      |  Bin 4099 -> 1577 bytes
 guidata/images/filetypes/tgz.png      |  Bin 4099 -> 1577 bytes
 guidata/images/filetypes/tif.png      |  Bin 4045 -> 1512 bytes
 guidata/images/filetypes/txt.png      |  Bin 4323 -> 1801 bytes
 guidata/images/filetypes/xls.png      |  Bin 3758 -> 1237 bytes
 guidata/images/filetypes/zip.png      |  Bin 4099 -> 1577 bytes
 guidata/images/guidata.svg            | 1076 ++++++++++++++++-----------------
 guidata/images/max.png                |  Bin 176 -> 356 bytes
 guidata/images/min.png                |  Bin 170 -> 351 bytes
 guidata/images/none.png               |  Bin 1193 -> 331 bytes
 guidata/images/not_found.png          |  Bin 355 -> 531 bytes
 guidata/images/python.png             |  Bin 654 -> 887 bytes
 guidata/images/quickview.png          |  Bin 3425 -> 888 bytes
 guidata/images/save_all.png           |  Bin 1428 -> 1599 bytes
 guidata/images/selection.png          |  Bin 603 -> 744 bytes
 guidata/images/settings.png           |  Bin 2074 -> 2445 bytes
 guidata/images/shape.png              |  Bin 248 -> 361 bytes
 guidata/images/xmax.png               |  Bin 184 -> 354 bytes
 guidata/images/xmin.png               |  Bin 186 -> 353 bytes
 guidata/qt/QtCore.py                  |   58 +-
 guidata/qt/QtDesigner.py              |   28 +-
 guidata/qt/QtGui.py                   |   40 +-
 guidata/qt/QtSvg.py                   |   28 +-
 guidata/qt/QtWebKit.py                |   32 +-
 guidata/qt/__init__.py                |  140 +++--
 guidata/tests/all_features.py         |    1 +
 guidata/userconfig.py                 |    3 +-
 90 files changed, 1410 insertions(+), 1326 deletions(-)

diff --git a/Licence_CeCILL_V2-en.txt b/Licence_CeCILL_V2-en.txt
index fcc8df2..f85af60 100644
--- a/Licence_CeCILL_V2-en.txt
+++ b/Licence_CeCILL_V2-en.txt
@@ -1,506 +1,506 @@
-
-CeCILL FREE SOFTWARE LICENSE AGREEMENT
-
-
-    Notice
-
-This Agreement is a Free Software license agreement that is the result
-of discussions between its authors in order to ensure compliance with
-the two main principles guiding its drafting:
-
-    * firstly, compliance with the principles governing the distribution
-      of Free Software: access to source code, broad rights granted to
-      users,
-    * secondly, the election of a governing law, French law, with which
-      it is conformant, both as regards the law of torts and
-      intellectual property law, and the protection that it offers to
-      both authors and holders of the economic rights over software.
-
-The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
-license are:
-
-Commissariat � l'Energie Atomique - CEA, a public scientific, technical
-and industrial research establishment, having its principal place of
-business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
-
-Centre National de la Recherche Scientifique - CNRS, a public scientific
-and technological establishment, having its principal place of business
-at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
-
-Institut National de Recherche en Informatique et en Automatique -
-INRIA, a public scientific and technological establishment, having its
-principal place of business at Domaine de Voluceau, Rocquencourt, BP
-105, 78153 Le Chesnay cedex, France.
-
-
-    Preamble
-
-The purpose of this Free Software license agreement is to grant users
-the right to modify and redistribute the software governed by this
-license within the framework of an open source distribution model.
-
-The exercising of these rights is conditional upon certain obligations
-for users so as to preserve this status for all subsequent redistributions.
-
-In consideration of access to the source code and the rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty and the software's author, the holder of the
-economic rights, and the successive licensors only have limited liability.
-
-In this respect, the risks associated with loading, using, modifying
-and/or developing or reproducing the software by the user are brought to
-the user's attention, given its Free Software status, which may make it
-complicated to use, with the result that its use is reserved for
-developers and experienced professionals having in-depth computer
-knowledge. Users are therefore encouraged to load and test the
-suitability of the software as regards their requirements in conditions
-enabling the security of their systems and/or data to be ensured and,
-more generally, to use and operate it in the same conditions of
-security. This Agreement may be freely reproduced and published,
-provided it is not altered, and that no provisions are either added or
-removed herefrom.
-
-This Agreement may apply to any or all software for which the holder of
-the economic rights decides to submit the use thereof to its provisions.
-
-
-    Article 1 - DEFINITIONS
-
-For the purpose of this Agreement, when the following expressions
-commence with a capital letter, they shall have the following meaning:
-
-Agreement: means this license agreement, and its possible subsequent
-versions and annexes.
-
-Software: means the software in its Object Code and/or Source Code form
-and, where applicable, its documentation, "as is" when the Licensee
-accepts the Agreement.
-
-Initial Software: means the Software in its Source Code and possibly its
-Object Code form and, where applicable, its documentation, "as is" when
-it is first distributed under the terms and conditions of the Agreement.
-
-Modified Software: means the Software modified by at least one
-Contribution.
-
-Source Code: means all the Software's instructions and program lines to
-which access is required so as to modify the Software.
-
-Object Code: means the binary files originating from the compilation of
-the Source Code.
-
-Holder: means the holder(s) of the economic rights over the Initial
-Software.
-
-Licensee: means the Software user(s) having accepted the Agreement.
-
-Contributor: means a Licensee having made at least one Contribution.
-
-Licensor: means the Holder, or any other individual or legal entity, who
-distributes the Software under the Agreement.
-
-Contribution: means any or all modifications, corrections, translations,
-adaptations and/or new functions integrated into the Software by any or
-all Contributors, as well as any or all Internal Modules.
-
-Module: means a set of sources files including their documentation that
-enables supplementary functions or services in addition to those offered
-by the Software.
-
-External Module: means any or all Modules, not derived from the
-Software, so that this Module and the Software run in separate address
-spaces, with one calling the other when they are run.
-
-Internal Module: means any or all Module, connected to the Software so
-that they both execute in the same address space.
-
-GNU GPL: means the GNU General Public License version 2 or any
-subsequent version, as published by the Free Software Foundation Inc.
-
-Parties: mean both the Licensee and the Licensor.
-
-These expressions may be used both in singular and plural form.
-
-
-    Article 2 - PURPOSE
-
-The purpose of the Agreement is the grant by the Licensor to the
-Licensee of a non-exclusive, transferable and worldwide license for the
-Software as set forth in Article 5 hereinafter for the whole term of the
-protection granted by the rights over said Software. 
-
-
-    Article 3 - ACCEPTANCE
-
-3.1 The Licensee shall be deemed as having accepted the terms and
-conditions of this Agreement upon the occurrence of the first of the
-following events:
-
-    * (i) loading the Software by any or all means, notably, by
-      downloading from a remote server, or by loading from a physical
-      medium;
-    * (ii) the first time the Licensee exercises any of the rights
-      granted hereunder.
-
-3.2 One copy of the Agreement, containing a notice relating to the
-characteristics of the Software, to the limited warranty, and to the
-fact that its use is restricted to experienced users has been provided
-to the Licensee prior to its acceptance as set forth in Article 3.1
-hereinabove, and the Licensee hereby acknowledges that it has read and
-understood it.
-
-
-    Article 4 - EFFECTIVE DATE AND TERM
-
-
-      4.1 EFFECTIVE DATE
-
-The Agreement shall become effective on the date when it is accepted by
-the Licensee as set forth in Article 3.1.
-
-
-      4.2 TERM
-
-The Agreement shall remain in force for the entire legal term of
-protection of the economic rights over the Software.
-
-
-    Article 5 - SCOPE OF RIGHTS GRANTED
-
-The Licensor hereby grants to the Licensee, who accepts, the following
-rights over the Software for any or all use, and for the term of the
-Agreement, on the basis of the terms and conditions set forth hereinafter.
-
-Besides, if the Licensor owns or comes to own one or more patents
-protecting all or part of the functions of the Software or of its
-components, the Licensor undertakes not to enforce the rights granted by
-these patents against successive Licensees using, exploiting or
-modifying the Software. If these patents are transferred, the Licensor
-undertakes to have the transferees subscribe to the obligations set
-forth in this paragraph.
-
-
-      5.1 RIGHT OF USE
-
-The Licensee is authorized to use the Software, without any limitation
-as to its fields of application, with it being hereinafter specified
-that this comprises:
-
-   1. permanent or temporary reproduction of all or part of the Software
-      by any or all means and in any or all form.
-
-   2. loading, displaying, running, or storing the Software on any or
-      all medium.
-
-   3. entitlement to observe, study or test its operation so as to
-      determine the ideas and principles behind any or all constituent
-      elements of said Software. This shall apply when the Licensee
-      carries out any or all loading, displaying, running, transmission
-      or storage operation as regards the Software, that it is entitled
-      to carry out hereunder.
-
-
-      5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
-
-The right to make Contributions includes the right to translate, adapt,
-arrange, or make any or all modifications to the Software, and the right
-to reproduce the resulting software.
-
-The Licensee is authorized to make any or all Contributions to the
-Software provided that it includes an explicit notice that it is the
-author of said Contribution and indicates the date of the creation thereof.
-
-
-      5.3 RIGHT OF DISTRIBUTION
-
-In particular, the right of distribution includes the right to publish,
-transmit and communicate the Software to the general public on any or
-all medium, and by any or all means, and the right to market, either in
-consideration of a fee, or free of charge, one or more copies of the
-Software by any means.
-
-The Licensee is further authorized to distribute copies of the modified
-or unmodified Software to third parties according to the terms and
-conditions set forth hereinafter.
-
-
-        5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
-
-The Licensee is authorized to distribute true copies of the Software in
-Source Code or Object Code form, provided that said distribution
-complies with all the provisions of the Agreement and is accompanied by:
-
-   1. a copy of the Agreement,
-
-   2. a notice relating to the limitation of both the Licensor's
-      warranty and liability as set forth in Articles 8 and 9,
-
-and that, in the event that only the Object Code of the Software is
-redistributed, the Licensee allows future Licensees unhindered access to
-the full Source Code of the Software by indicating how to access it, it
-being understood that the additional cost of acquiring the Source Code
-shall not exceed the cost of transferring the data.
-
-
-        5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
-
-When the Licensee makes a Contribution to the Software, the terms and
-conditions for the distribution of the resulting Modified Software
-become subject to all the provisions of this Agreement.
-
-The Licensee is authorized to distribute the Modified Software, in
-source code or object code form, provided that said distribution
-complies with all the provisions of the Agreement and is accompanied by:
-
-   1. a copy of the Agreement,
-
-   2. a notice relating to the limitation of both the Licensor's
-      warranty and liability as set forth in Articles 8 and 9,
-
-and that, in the event that only the object code of the Modified
-Software is redistributed, the Licensee allows future Licensees
-unhindered access to the full source code of the Modified Software by
-indicating how to access it, it being understood that the additional
-cost of acquiring the source code shall not exceed the cost of
-transferring the data.
-
-
-        5.3.3 DISTRIBUTION OF EXTERNAL MODULES
-
-When the Licensee has developed an External Module, the terms and
-conditions of this Agreement do not apply to said External Module, that
-may be distributed under a separate license agreement.
-
-
-        5.3.4 COMPATIBILITY WITH THE GNU GPL
-
-The Licensee can include a code that is subject to the provisions of one
-of the versions of the GNU GPL in the Modified or unmodified Software,
-and distribute that entire code under the terms of the same version of
-the GNU GPL.
-
-The Licensee can include the Modified or unmodified Software in a code
-that is subject to the provisions of one of the versions of the GNU GPL,
-and distribute that entire code under the terms of the same version of
-the GNU GPL.
-
-
-    Article 6 - INTELLECTUAL PROPERTY
-
-
-      6.1 OVER THE INITIAL SOFTWARE
-
-The Holder owns the economic rights over the Initial Software. Any or
-all use of the Initial Software is subject to compliance with the terms
-and conditions under which the Holder has elected to distribute its work
-and no one shall be entitled to modify the terms and conditions for the
-distribution of said Initial Software.
-
-The Holder undertakes that the Initial Software will remain ruled at
-least by this Agreement, for the duration set forth in Article 4.2.
-
-
-      6.2 OVER THE CONTRIBUTIONS
-
-The Licensee who develops a Contribution is the owner of the
-intellectual property rights over this Contribution as defined by
-applicable law.
-
-
-      6.3 OVER THE EXTERNAL MODULES
-
-The Licensee who develops an External Module is the owner of the
-intellectual property rights over this External Module as defined by
-applicable law and is free to choose the type of agreement that shall
-govern its distribution.
-
-
-      6.4 JOINT PROVISIONS
-
-The Licensee expressly undertakes:
-
-   1. not to remove, or modify, in any manner, the intellectual property
-      notices attached to the Software;
-
-   2. to reproduce said notices, in an identical manner, in the copies
-      of the Software modified or not.
-
-The Licensee undertakes not to directly or indirectly infringe the
-intellectual property rights of the Holder and/or Contributors on the
-Software and to take, where applicable, vis-�-vis its staff, any and all
-measures required to ensure respect of said intellectual property rights
-of the Holder and/or Contributors.
-
-
-    Article 7 - RELATED SERVICES
-
-7.1 Under no circumstances shall the Agreement oblige the Licensor to
-provide technical assistance or maintenance services for the Software.
-
-However, the Licensor is entitled to offer this type of services. The
-terms and conditions of such technical assistance, and/or such
-maintenance, shall be set forth in a separate instrument. Only the
-Licensor offering said maintenance and/or technical assistance services
-shall incur liability therefor.
-
-7.2 Similarly, any Licensor is entitled to offer to its licensees, under
-its sole responsibility, a warranty, that shall only be binding upon
-itself, for the redistribution of the Software and/or the Modified
-Software, under terms and conditions that it is free to decide. Said
-warranty, and the financial terms and conditions of its application,
-shall be subject of a separate instrument executed between the Licensor
-and the Licensee.
-
-
-    Article 8 - LIABILITY
-
-8.1 Subject to the provisions of Article 8.2, the Licensee shall be
-entitled to claim compensation for any direct loss it may have suffered
-from the Software as a result of a fault on the part of the relevant
-Licensor, subject to providing evidence thereof.
-
-8.2 The Licensor's liability is limited to the commitments made under
-this Agreement and shall not be incurred as a result of in particular:
-(i) loss due the Licensee's total or partial failure to fulfill its
-obligations, (ii) direct or consequential loss that is suffered by the
-Licensee due to the use or performance of the Software, and (iii) more
-generally, any consequential loss. In particular the Parties expressly
-agree that any or all pecuniary or business loss (i.e. loss of data,
-loss of profits, operating loss, loss of customers or orders,
-opportunity cost, any disturbance to business activities) or any or all
-legal proceedings instituted against the Licensee by a third party,
-shall constitute consequential loss and shall not provide entitlement to
-any or all compensation from the Licensor.
-
-
-    Article 9 - WARRANTY
-
-9.1 The Licensee acknowledges that the scientific and technical
-state-of-the-art when the Software was distributed did not enable all
-possible uses to be tested and verified, nor for the presence of
-possible defects to be detected. In this respect, the Licensee's
-attention has been drawn to the risks associated with loading, using,
-modifying and/or developing and reproducing the Software which are
-reserved for experienced users.
-
-The Licensee shall be responsible for verifying, by any or all means,
-the suitability of the product for its requirements, its good working
-order, and for ensuring that it shall not cause damage to either persons
-or properties.
-
-9.2 The Licensor hereby represents, in good faith, that it is entitled
-to grant all the rights over the Software (including in particular the
-rights set forth in Article 5).
-
-9.3 The Licensee acknowledges that the Software is supplied "as is" by
-the Licensor without any other express or tacit warranty, other than
-that provided for in Article 9.2 and, in particular, without any warranty 
-as to its commercial value, its secured, safe, innovative or relevant
-nature.
-
-Specifically, the Licensor does not warrant that the Software is free
-from any error, that it will operate without interruption, that it will
-be compatible with the Licensee's own equipment and software
-configuration, nor that it will meet the Licensee's requirements.
-
-9.4 The Licensor does not either expressly or tacitly warrant that the
-Software does not infringe any third party intellectual property right
-relating to a patent, software or any other property right. Therefore,
-the Licensor disclaims any and all liability towards the Licensee
-arising out of any or all proceedings for infringement that may be
-instituted in respect of the use, modification and redistribution of the
-Software. Nevertheless, should such proceedings be instituted against
-the Licensee, the Licensor shall provide it with technical and legal
-assistance for its defense. Such technical and legal assistance shall be
-decided on a case-by-case basis between the relevant Licensor and the
-Licensee pursuant to a memorandum of understanding. The Licensor
-disclaims any and all liability as regards the Licensee's use of the
-name of the Software. No warranty is given as regards the existence of
-prior rights over the name of the Software or as regards the existence
-of a trademark.
-
-
-    Article 10 - TERMINATION
-
-10.1 In the event of a breach by the Licensee of its obligations
-hereunder, the Licensor may automatically terminate this Agreement
-thirty (30) days after notice has been sent to the Licensee and has
-remained ineffective.
-
-10.2 A Licensee whose Agreement is terminated shall no longer be
-authorized to use, modify or distribute the Software. However, any
-licenses that it may have granted prior to termination of the Agreement
-shall remain valid subject to their having been granted in compliance
-with the terms and conditions hereof.
-
-
-    Article 11 - MISCELLANEOUS
-
-
-      11.1 EXCUSABLE EVENTS
-
-Neither Party shall be liable for any or all delay, or failure to
-perform the Agreement, that may be attributable to an event of force
-majeure, an act of God or an outside cause, such as defective
-functioning or interruptions of the electricity or telecommunications
-networks, network paralysis following a virus attack, intervention by
-government authorities, natural disasters, water damage, earthquakes,
-fire, explosions, strikes and labor unrest, war, etc.
-
-11.2 Any failure by either Party, on one or more occasions, to invoke
-one or more of the provisions hereof, shall under no circumstances be
-interpreted as being a waiver by the interested Party of its right to
-invoke said provision(s) subsequently.
-
-11.3 The Agreement cancels and replaces any or all previous agreements,
-whether written or oral, between the Parties and having the same
-purpose, and constitutes the entirety of the agreement between said
-Parties concerning said purpose. No supplement or modification to the
-terms and conditions hereof shall be effective as between the Parties
-unless it is made in writing and signed by their duly authorized
-representatives.
-
-11.4 In the event that one or more of the provisions hereof were to
-conflict with a current or future applicable act or legislative text,
-said act or legislative text shall prevail, and the Parties shall make
-the necessary amendments so as to comply with said act or legislative
-text. All other provisions shall remain effective. Similarly, invalidity
-of a provision of the Agreement, for any reason whatsoever, shall not
-cause the Agreement as a whole to be invalid.
-
-
-      11.5 LANGUAGE
-
-The Agreement is drafted in both French and English and both versions
-are deemed authentic.
-
-
-    Article 12 - NEW VERSIONS OF THE AGREEMENT
-
-12.1 Any person is authorized to duplicate and distribute copies of this
-Agreement.
-
-12.2 So as to ensure coherence, the wording of this Agreement is
-protected and may only be modified by the authors of the License, who
-reserve the right to periodically publish updates or new versions of the
-Agreement, each with a separate number. These subsequent versions may
-address new issues encountered by Free Software.
-
-12.3 Any Software distributed under a given version of the Agreement may
-only be subsequently distributed under the same version of the Agreement
-or a subsequent version, subject to the provisions of Article 5.3.4.
-
-
-    Article 13 - GOVERNING LAW AND JURISDICTION
-
-13.1 The Agreement is governed by French law. The Parties agree to
-endeavor to seek an amicable solution to any disagreements or disputes
-that may arise during the performance of the Agreement.
-
-13.2 Failing an amicable solution within two (2) months as from their
-occurrence, and unless emergency proceedings are necessary, the
-disagreements or disputes shall be referred to the Paris Courts having
-jurisdiction, by the more diligent Party.
-
-
-Version 2.0 dated 2006-09-05.
+
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+
+    Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+    * firstly, compliance with the principles governing the distribution
+      of Free Software: access to source code, broad rights granted to
+      users,
+    * secondly, the election of a governing law, French law, with which
+      it is conformant, both as regards the law of torts and
+      intellectual property law, and the protection that it offers to
+      both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat � l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+    Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+    Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+    Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software. 
+
+
+    Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+    * (i) loading the Software by any or all means, notably, by
+      downloading from a remote server, or by loading from a physical
+      medium;
+    * (ii) the first time the Licensee exercises any of the rights
+      granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+    Article 4 - EFFECTIVE DATE AND TERM
+
+
+      4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+      4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+    Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+      5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+   1. permanent or temporary reproduction of all or part of the Software
+      by any or all means and in any or all form.
+
+   2. loading, displaying, running, or storing the Software on any or
+      all medium.
+
+   3. entitlement to observe, study or test its operation so as to
+      determine the ideas and principles behind any or all constituent
+      elements of said Software. This shall apply when the Licensee
+      carries out any or all loading, displaying, running, transmission
+      or storage operation as regards the Software, that it is entitled
+      to carry out hereunder.
+
+
+      5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+      5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+        5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+   1. a copy of the Agreement,
+
+   2. a notice relating to the limitation of both the Licensor's
+      warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+        5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+   1. a copy of the Agreement,
+
+   2. a notice relating to the limitation of both the Licensor's
+      warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+        5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+        5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+    Article 6 - INTELLECTUAL PROPERTY
+
+
+      6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+      6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+      6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+      6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+   1. not to remove, or modify, in any manner, the intellectual property
+      notices attached to the Software;
+
+   2. to reproduce said notices, in an identical manner, in the copies
+      of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-�-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+    Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+    Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+    Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty 
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+    Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+    Article 11 - MISCELLANEOUS
+
+
+      11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+      11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+    Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+    Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
diff --git a/MANIFEST.in b/MANIFEST.in
index b5ea61f..937ce04 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -5,4 +5,5 @@ include guidata-tests.py
 include MANIFEST.in
 include Licence_CeCILL_V2-en.txt
 include README
-include changelog
\ No newline at end of file
+include changelog
+prune guidata/tests/dist
\ No newline at end of file
diff --git a/PKG-INFO b/PKG-INFO
index 404d246..4c585c9 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: guidata
-Version: 1.7.0b2
+Version: 1.7.0b5
 Summary: guidata is a set of basic GUIs to edit and display objects of many kinds
 Home-page: https://github.com/PierreRaybaut/guidata
 Author: Pierre Raybaut
diff --git a/changelog b/changelog
index 4044659..8dfb9e0 100644
--- a/changelog
+++ b/changelog
@@ -2,7 +2,7 @@
 
 === Possible API compatibility issues (since v1.6.2) ===
 
-  * Added PyQt5 support (there may be side effects).
+  * Added support for PyQt5 (removed old-style signals)
 
 ----
 
diff --git a/doc/conf.py b/doc/conf.py
index 77b5154..fbb42da 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -96,6 +96,8 @@ pygments_style = 'sphinx'
 # A list of ignored prefixes for module index sorting.
 modindex_common_prefix = ['guidata.']
 
+autodoc_member_order = 'bysource'
+
 
 # -- Options for HTML output ---------------------------------------------------
 
@@ -126,7 +128,7 @@ html_logo = 'images/guidata.png'
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 # pixels large.
-html_favicon = 'favicon.ico'
+html_favicon = '_static/favicon.ico'
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
diff --git a/doc/development.rst b/doc/development.rst
index fac6e74..2ed9a1a 100644
--- a/doc/development.rst
+++ b/doc/development.rst
@@ -50,22 +50,23 @@ following recommendations should be followed:
 PyQt / PySide compatibility
 ---------------------------
 
-In the near future, the project will be officially compatible with both PyQt 
-and PySide.
+The project should be mostly compatible with both PyQt and PySide (although 
+PySide is not as popular as it used to be, so testing tend to be limited).
 
-In its current implementation, it has to be compatible with PyQt API #1 (old 
-PyQt versions) and API #2 (PySide-compatible API, PyQt >= v4.6), which means 
-that the following recommendations should be followed:
+PyQt5 compatibility
+-------------------
+
+In its current implementation, the code base has to be compatible with PyQt 
+API #2 (PySide-compatible API, PyQt >= v4.6) and with PyQt5, which means that 
+the following recommendations should be followed:
 
 * `QVariant` objects must not be used (API #2 compatibility)
 
-* `QString` and `QStringList` objects must not be used (API #2 compatibility)
+* Use exclusively new-style signals and slots
 
-* When connecting built-in C++ signals which were originally made to pass 
-  strings (or string lists), the arguments should always be assumed to be 
-  `QString` (or `QStringList`) objects (API #1 compatibility) and so be 
-  converted systematically to the Python equivalent object, i.e. unicode 
-  (or list).
+* Read carefully PyQt5 documentation regarding class inheritance behavior: it 
+  is quite different than the old PyQt4 implementation. Producing code 
+  compatible with both PyQt4 and PyQt5 can be tricky: testing is essential.
 
 
 Python 3 compatibility
@@ -111,7 +112,7 @@ issues with Python 3. For example:
 
   * file I/O may return `bytes` instead of `str` in Python 3 (depending on the 
     open mode): this can be solved by calling the `decode` method on the `bytes` 
-    object (this will work on both Python 2 `str` and Python 3 `bytes objects)
+    object (this will work on both Python 2 `str` and Python 3 `bytes` objects)
 
   * in Python 3.0-3.2, the `u'unicode text'` or `u"unicode text"` syntax is 
     not allowed and will raise a SyntaxError: this can be solved by inserting the 
diff --git a/doc/index.rst b/doc/index.rst
index dbe88ab..9e4efa5 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -11,7 +11,7 @@ Contents:
     installation
     development
     examples
-    reference
+    reference/index
     
 
 Indices and tables:
diff --git a/doc/installation.rst b/doc/installation.rst
index b5667c8..e577d96 100644
--- a/doc/installation.rst
+++ b/doc/installation.rst
@@ -5,29 +5,34 @@ Dependencies
 ------------
 
 Requirements:
+
     * Python >=v2.5
     * PyQt4 4.x (x>=3 ; recommended x>=4) or PyQt5 5.x (x>=5)
     * spyderlib >=v2.0.10 for the test launcher and array/dictionnary editors
     
 Optional Python modules:
+
     * h5py (HDF5 files I/O)
     * py2exe (application deployment on Windows platforms)
 
 Other optional modules:
+
     * gettext
 
 Installation
 ------------
 
 From the source package:
+
     `python setup.py install`
         
 Help and support
 ----------------
 
 External resources:
-    * Bug reports and feature requests: `GoogleCode`_
+
+    * Bug reports and feature requests: `GitHub`_
     * Help, support and discussions around the project: `GoogleGroup`_
 
-.. _GoogleCode: http://guidata.googlecode.com
+.. _GitHub: https://github.com/PierreRaybaut/guidata
 .. _GoogleGroup: http://groups.google.fr/group/guidata_guiqwt
diff --git a/doc/reference.rst b/doc/reference.rst
deleted file mode 100644
index 6a79da1..0000000
--- a/doc/reference.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-GUIData reference
-=================
-
-.. automodule:: guidata.dataset
-   :members:
-   :inherited-members:
-
-.. automodule:: guidata.qthelpers
-   :members:
-   :inherited-members:
-
-.. automodule:: guidata.disthelpers
-   :members:
-   :inherited-members:
-
-.. automodule:: guidata.configtools
-   :members:
-   :inherited-members:
-
-.. automodule:: guidata.userconfig
-   :members:
-   :inherited-members:
-
-.. automodule:: guidata.utils
-   :members:
-   :inherited-members:
diff --git a/doc/reference/configtools.rst b/doc/reference/configtools.rst
new file mode 100644
index 0000000..23b7280
--- /dev/null
+++ b/doc/reference/configtools.rst
@@ -0,0 +1,2 @@
+.. automodule:: guidata.configtools
+   :members:
diff --git a/doc/reference/dataset.rst b/doc/reference/dataset.rst
new file mode 100644
index 0000000..a52fae5
--- /dev/null
+++ b/doc/reference/dataset.rst
@@ -0,0 +1,2 @@
+.. automodule:: guidata.dataset
+   :members:
diff --git a/doc/reference/disthelpers.rst b/doc/reference/disthelpers.rst
new file mode 100644
index 0000000..b38f6fe
--- /dev/null
+++ b/doc/reference/disthelpers.rst
@@ -0,0 +1,2 @@
+.. automodule:: guidata.disthelpers
+   :members:
diff --git a/doc/reference/index.rst b/doc/reference/index.rst
new file mode 100644
index 0000000..d03ea08
--- /dev/null
+++ b/doc/reference/index.rst
@@ -0,0 +1,14 @@
+Reference
+=========
+
+guidata API:
+
+.. toctree::
+    :maxdepth: 2
+    
+    dataset
+    qthelpers
+    disthelpers
+    configtools
+    userconfig
+    utils
diff --git a/doc/reference/qthelpers.rst b/doc/reference/qthelpers.rst
new file mode 100644
index 0000000..e658b1d
--- /dev/null
+++ b/doc/reference/qthelpers.rst
@@ -0,0 +1,2 @@
+.. automodule:: guidata.qthelpers
+   :members:
diff --git a/doc/reference/userconfig.rst b/doc/reference/userconfig.rst
new file mode 100644
index 0000000..35fffe4
--- /dev/null
+++ b/doc/reference/userconfig.rst
@@ -0,0 +1,2 @@
+.. automodule:: guidata.userconfig
+   :members:
diff --git a/doc/reference/utils.rst b/doc/reference/utils.rst
new file mode 100644
index 0000000..ef5e7a6
--- /dev/null
+++ b/doc/reference/utils.rst
@@ -0,0 +1,2 @@
+.. automodule:: guidata.utils
+   :members:
diff --git a/guidata-tests b/guidata-tests
index 491db57..edeca12 100644
--- a/guidata-tests
+++ b/guidata-tests
@@ -1,3 +1,3 @@
-#!/usr/bin/env python
-from guidata import tests
+#!/usr/bin/env python
+from guidata import tests
 tests.run()
\ No newline at end of file
diff --git a/guidata.egg-info/PKG-INFO b/guidata.egg-info/PKG-INFO
index 404d246..4c585c9 100644
--- a/guidata.egg-info/PKG-INFO
+++ b/guidata.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: guidata
-Version: 1.7.0b2
+Version: 1.7.0b5
 Summary: guidata is a set of basic GUIs to edit and display objects of many kinds
 Home-page: https://github.com/PierreRaybaut/guidata
 Author: Pierre Raybaut
diff --git a/guidata.egg-info/SOURCES.txt b/guidata.egg-info/SOURCES.txt
index ebb3eee..f3fa97a 100644
--- a/guidata.egg-info/SOURCES.txt
+++ b/guidata.egg-info/SOURCES.txt
@@ -12,7 +12,6 @@ doc/examples.rst
 doc/index.rst
 doc/installation.rst
 doc/overview.rst
-doc/reference.rst
 doc/_static/favicon.ico
 doc/images/basic_example.png
 doc/images/guidata.png
@@ -23,6 +22,13 @@ doc/images/screenshots/all_items.png
 doc/images/screenshots/bool_selector.png
 doc/images/screenshots/datasetgroup.png
 doc/images/screenshots/editgroupbox.png
+doc/reference/configtools.rst
+doc/reference/dataset.rst
+doc/reference/disthelpers.rst
+doc/reference/index.rst
+doc/reference/qthelpers.rst
+doc/reference/userconfig.rst
+doc/reference/utils.rst
 guidata/__init__.py
 guidata/config.py
 guidata/configtools.py
diff --git a/guidata/__init__.py b/guidata/__init__.py
index 9d40af1..ccf4fb7 100644
--- a/guidata/__init__.py
+++ b/guidata/__init__.py
@@ -3,19 +3,19 @@
 guidata
 =======
 
-Based on the Qt Python binding module PyQt4, `guidata` is a Python library
+Based on the Qt Python binding module PyQt, `guidata` is a Python library
 generating graphical user interfaces for easy dataset editing and display.
-It also provides helpers and application development tools for PyQt4.
+It also provides helpers and application development tools for PyQt.
 
 External resources:
-    * Bug reports and feature requests: `GoogleCode`_
+    * Bug reports and feature requests: `GitHub`_
     * Help, support and discussions around the project: `GoogleGroup`_
 
-.. _GoogleCode: http://guidata.googlecode.com
+.. _GitHub: https://github.com/PierreRaybaut/guidata
 .. _GoogleGroup: http://groups.google.fr/group/guidata_guiqwt
 """
 
-__version__ = '1.7.0b2'
+__version__ = '1.7.0b5'
 
 # Dear (Debian, RPM, ...) package makers, please feel free to customize the
 # following path to module's data (images) and translations:
diff --git a/guidata/dataset/__init__.py b/guidata/dataset/__init__.py
index 120f5ea..36cc793 100644
--- a/guidata/dataset/__init__.py
+++ b/guidata/dataset/__init__.py
@@ -14,9 +14,13 @@ display and editing with automatically generated graphical user interfaces.
 
 .. automodule:: guidata.dataset.dataitems
    :members:
-   :inherited-members:
        
 .. automodule:: guidata.dataset.datatypes
    :members:
-   :inherited-members:
+       
+.. automodule:: guidata.dataset.qtitemwidgets
+   :members:
+       
+.. automodule:: guidata.dataset.qtwidgets
+   :members:
 """
diff --git a/guidata/dataset/dataitems.py b/guidata/dataset/dataitems.py
index acd594d..6354d10 100644
--- a/guidata/dataset/dataitems.py
+++ b/guidata/dataset/dataitems.py
@@ -32,9 +32,10 @@ class NumericTypeItem(DataItem):
     """
     type = None
     def __init__(self, label, default=None, min=None, max=None,
-                 nonzero=None, unit='', help=''):
+                 nonzero=None, unit='', help='', check=True):
         DataItem.__init__(self, label, default=default, help=help)
-        self.set_prop("data", min=min, max=max, nonzero=nonzero)
+        self.set_prop("data", min=min, max=max, nonzero=nonzero,
+                      check_value=check)
         self.set_prop("display", unit=unit)
         
     def get_auto_help(self, instance):
@@ -67,7 +68,9 @@ class NumericTypeItem(DataItem):
         return text
 
     def check_value(self, value):
-        """Override DataItem method"""
+        """Override DataItem method"""        
+        if not self.get_prop('data', 'check_value', True):
+            return True 
         if not isinstance(value, self.type):
             return False
         if self.get_prop("data", "nonzero") and value == 0:
@@ -107,12 +110,13 @@ class FloatItem(NumericTypeItem):
         * nonzero [bool]: if True, zero is not a valid value (optional)
         * unit [string]: physical unit (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     type = float
-    def __init__(self, label, default=None, min=None, max=None,
-                 nonzero=None, unit='', step=0.1, slider=False, help=''):
+    def __init__(self, label, default=None, min=None, max=None, nonzero=None,
+                 unit='', step=0.1, slider=False, help='', check=True):
         super(FloatItem, self).__init__(label, default=default, min=min,
-                                max=max, nonzero=nonzero, unit=unit, help=help)
+                max=max, nonzero=nonzero, unit=unit, help=help, check=check)
         self.set_prop("display", slider=slider)
         self.set_prop("data", step=step)
 
@@ -136,12 +140,13 @@ class IntItem(NumericTypeItem):
         * slider [bool]: if True, shows a slider widget right after the line 
           edit widget (default is False)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     type = int
-    def __init__(self, label, default=None, min=None, max=None,
-                 nonzero=None, unit='', even=None, slider=False, help=''):
+    def __init__(self, label, default=None, min=None, max=None, nonzero=None,
+                 unit='', even=None, slider=False, help='', check=True):
         super(IntItem, self).__init__(label, default=default, min=min, max=max,
-                                      nonzero=nonzero, unit=unit, help=help)
+                            nonzero=nonzero, unit=unit, help=help, check=check)
         self.set_prop("data", even=even)
         self.set_prop("display", slider=slider)
         
@@ -157,7 +162,9 @@ class IntItem(NumericTypeItem):
         return auto_help
         
     def check_value(self, value):
-        """Override DataItem method"""
+        """Override DataItem method"""        
+        if not self.get_prop('data', 'check_value', True):
+            return True 
         valid = super(IntItem, self).check_value(value)
         if not valid:
             return False
@@ -184,14 +191,14 @@ class StringItem(DataItem):
         * wordwrap [bool]: toggle word wrapping (optional)
     """
     type = TEXT_TYPES
-    def __init__(self, label, default=None, notempty=None,
-                 wordwrap=False, help=''):
+    def __init__(self, label, default=None, notempty=None, wordwrap=False,
+                 help=''):
         DataItem.__init__(self, label, default=default, help=help)
         self.set_prop("data", notempty=notempty)
         self.set_prop("display", wordwrap=wordwrap)
 
     def check_value(self, value):
-        """Override DataItem method"""
+        """Override DataItem method"""        
         notempty = self.get_prop("data", "notempty")
         if notempty and not value:
             return False
@@ -230,10 +237,11 @@ class BoolItem(DataItem):
         * label [string]: name
         * default [string]: default value (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     type = bool
-    def __init__(self, text='', label='', default=None, help=''):
-        DataItem.__init__(self, label, default=default, help=help)
+    def __init__(self, text='', label='', default=None, help='', check=True):
+        DataItem.__init__(self, label, default=default, help=help, check=check)
         self.set_prop("display", text=text)
 
     def get_value_from_reader(self, reader):
@@ -262,11 +270,14 @@ class ColorItem(StringItem):
         * label [string]: name
         * default [string]: default value (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     
     Color values are encoded as hexadecimal strings or Qt color names
     """
     def check_value(self, value):
-        """Override DataItem method"""
+        """Override DataItem method"""        
+        if not self.get_prop('data', 'check_value', True):
+            return True 
         if not isinstance(value, self.type):
             return False
         from guidata.qthelpers import text_to_qcolor
@@ -289,10 +300,11 @@ class FileSaveItem(StringItem):
         * default [string]: default value (optional)
         * basedir [string]: default base directory (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     def __init__(self, label, formats='*', default=None,
-                 basedir=None, all_files_first=False, help=''):
-        DataItem.__init__(self, label, default=default, help=help)
+                 basedir=None, all_files_first=False, help='', check=True):
+        DataItem.__init__(self, label, default=default, help=help, check=check)
         if isinstance(formats, str):
             formats = [formats]
         self.set_prop("data", formats=formats)
@@ -306,7 +318,9 @@ class FileSaveItem(StringItem):
                else _("supported file types:") + " *.%s" % ", *.".join(formats)
     
     def check_value(self, value):
-        """Override DataItem method"""
+        """Override DataItem method"""        
+        if not self.get_prop('data', 'check_value', True):
+            return True 
         if not isinstance(value, self.type):
             return False
         return len(value)>0
@@ -324,9 +338,12 @@ class FileOpenItem(FileSaveItem):
         * default [string]: default value (optional)
         * basedir [string]: default base directory (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     def check_value(self, value):
         """Override DataItem method"""
+        if not self.get_prop('data', 'check_value', True):
+            return True        
         if not isinstance(value, self.type):
             return False
         return os.path.exists(value) and os.path.isfile(value)
@@ -340,18 +357,21 @@ class FilesOpenItem(FileSaveItem):
         * default [string]: default value (optional)
         * basedir [string]: default base directory (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     type = list
     def __init__(self, label, formats='*', default=None,
-                 basedir=None, all_files_first=False, help=''):
+                 basedir=None, all_files_first=False, help='', check=True):
         if is_text_string(default):
             default = [default]
-        FileSaveItem.__init__(self, label, formats=formats,
-                              default=default, basedir=basedir,
-                              all_files_first=all_files_first, help=help)
+        FileSaveItem.__init__(self, label, formats=formats, default=default,
+                              basedir=basedir, all_files_first=all_files_first,
+                              help=help, check=check)
 
     def check_value(self, value):
         """Override DataItem method"""
+        if not self.get_prop('data', 'check_value', True):
+            return True 
         allexist = True
         for path in value:
             allexist = allexist and os.path.exists(path) \
@@ -385,9 +405,12 @@ class DirectoryItem(StringItem):
         * label [string]: name
         * default [string]: default value (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     def check_value(self, value):
-        """Override DataItem method"""
+        """Override DataItem method"""        
+        if not self.get_prop('data', 'check_value', True):
+            return True 
         if not isinstance(value, self.type):
             return False
         return os.path.exists(value) and os.path.isdir(value)
@@ -406,8 +429,10 @@ class ChoiceItem(DataItem):
           or a function of one argument (key) returning a QIcon instance
         * default [-]: default label or default key (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
-    def __init__(self, label, choices, default=FirstChoice, help=''):
+    def __init__(self, label, choices, default=FirstChoice, help='',
+                 check=True):
         if isinstance(choices, collections.Callable):
             _choices_data = ItemProperty(choices)
         else:
@@ -419,7 +444,7 @@ class ChoiceItem(DataItem):
             default = _choices_data[0][0]
         elif default is FirstChoice:
             default = None
-        DataItem.__init__(self, label, default=default, help=help)
+        DataItem.__init__(self, label, default=default, help=help, check=check)
         self.set_prop("data", choices=_choices_data )
 
     def _normalize_choice(self, idx, choice_tuple):
@@ -458,9 +483,10 @@ class MultipleChoiceItem(ChoiceItem):
         * choices [list or tuple]: string list or (key, label) list
         * default [-]: default label or default key (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
-    def __init__(self, label, choices, default=(), help=''):
-        ChoiceItem.__init__(self, label, choices, default, help)
+    def __init__(self, label, choices, default=(), help='', check=True):
+        ChoiceItem.__init__(self, label, choices, default, help, check=check)
         self.set_prop("display", shape = (1, -1))
         
     def horizontal(self, row_nb=1):
@@ -516,6 +542,7 @@ class ImageChoiceItem(ChoiceItem):
           returning a QIcon instance
         * default [-]: default label or default key (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     def _normalize_choice(self, idx, choice_tuple):
         assert isinstance(choice_tuple, tuple)
@@ -540,10 +567,11 @@ class FloatArrayItem(DataItem):
         * transpose [bool]: transpose matrix (display only)
         * large [bool]: view all float of the array
         * minmax [string]: "all" (default), "columns", "rows"
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
     def __init__(self, label, default=None, help='', format='%.3f',
-                 transpose=False, minmax="all"):
-        DataItem.__init__(self, label, default=default, help=help)
+                 transpose=False, minmax="all", check=True):
+        DataItem.__init__(self, label, default=default, help=help, check=check)
         self.set_prop("display", format=format, transpose=transpose,
                       minmax=minmax)
         
@@ -591,12 +619,14 @@ class ButtonItem(DataItem):
           (string: icon filename as in guidata/guiqwt image search paths)
         * default [unspecified]: default value passed to the callback (optional)
         * help [string]: text shown in button's tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     
     The value of this item is unspecified but is passed to the callback along 
     with the whole dataset. The value is assigned the callback`s return value.
     """
-    def __init__(self, label, callback, icon=None, default=None, help=''):
-        DataItem.__init__(self, label, default=default, help=help)
+    def __init__(self, label, callback, icon=None, default=None, help='',
+                 check=True):
+        DataItem.__init__(self, label, default=default, help=help, check=check)
         self.set_prop("display", callback=callback)
         self.set_prop("display", icon=icon)
 
@@ -614,8 +644,9 @@ class DictItem(ButtonItem):
         * label [string]: name
         * default [dict]: default value (optional)
         * help [string]: text shown in tooltip (optional)
+        * check [bool]: if False, value is not checked (optional, default=True)
     """
-    def __init__(self, label, default=None, help=''):
+    def __init__(self, label, default=None, help='', check=True):
         def dictedit(instance, item, value, parent):
             from spyderlib.widgets.dicteditor import DictEditor
             editor = DictEditor(parent)
@@ -629,8 +660,8 @@ class DictItem(ButtonItem):
                 if value_was_none:
                     return
                 return value
-        ButtonItem.__init__(self, label, dictedit,
-                            icon='dictedit.png', default=default, help=help)
+        ButtonItem.__init__(self, label, dictedit, icon='dictedit.png',
+                            default=default, help=help, check=check)
 
 
 class FontFamilyItem(StringItem):
diff --git a/guidata/dataset/datatypes.py b/guidata/dataset/datatypes.py
index caad131..8332be7 100644
--- a/guidata/dataset/datatypes.py
+++ b/guidata/dataset/datatypes.py
@@ -145,7 +145,7 @@ class DataItem(object):
     """
     count = 0
 
-    def __init__(self, label, default=None, help=''):
+    def __init__(self, label, default=None, help='', check=True):
         self._order = DataItem.count
         DataItem.count += 1
         self._name = None
@@ -154,6 +154,7 @@ class DataItem(object):
         self._props = {} # a dict realm->dict containing realm-specific properties
         self.set_prop("display", col=0, colspan=None,
                       label=utf8_to_unicode(label))
+        self.set_prop('data', check_value=check)
 
     def get_prop(self, realm, name, default=NoDefault):
         """Get one property of this item"""
diff --git a/guidata/dataset/qtitemwidgets.py b/guidata/dataset/qtitemwidgets.py
index cc676e2..394f98e 100644
--- a/guidata/dataset/qtitemwidgets.py
+++ b/guidata/dataset/qtitemwidgets.py
@@ -6,6 +6,9 @@
 # (see guidata/__init__.py for details)
 
 """
+dataset.qtitemwidgets
+=====================
+
 Widget factories used to edit data items
 (factory registration is done in guidata.dataset.qtwidgets)
 (data item types are defined in guidata.dataset.datatypes)
@@ -60,13 +63,14 @@ from guidata.py3compat import to_text_string, is_text_string
 
 class AbstractDataSetWidget(object):
     """
-    Base class for 'widgets' handled by DataSetEditLayout and it's derived classes
+    Base class for 'widgets' handled by `DataSetEditLayout` and it's derived 
+    classes.
     
-    this is a generic representation of an input (or display) widget that
+    This is a generic representation of an input (or display) widget that
     has a label and one or more entry field.
     
-    DataSetEditLayout uses a registry of *Item to *Widget mapping in order to
-    automatically create a GUI for a DataSet structure
+    `DataSetEditLayout` uses a registry of *Item* to *Widget* mapping in order 
+    to automatically create a GUI for a `DataSet` structure
     """
     READ_ONLY = False
     def __init__(self, item, parent_layout):
diff --git a/guidata/dataset/qtwidgets.py b/guidata/dataset/qtwidgets.py
index 7629f38..8df9dcd 100644
--- a/guidata/dataset/qtwidgets.py
+++ b/guidata/dataset/qtwidgets.py
@@ -6,6 +6,9 @@
 # (see guidata/__init__.py for details)
 
 """
+dataset.qtwidgets
+=================
+
 Dialog boxes used to edit data sets:
     DataSetEditDialog
     DataSetGroupEditDialog
@@ -474,6 +477,8 @@ class DataSetEditGroupBox(DataSetShowGroupBox):
     button_text: action button text (default: "Apply")
     button_icon: QIcon object or string (default "apply.png")
     """
+    
+    #: Signal emitted when Apply button is clicked
     SIG_APPLY_BUTTON_CLICKED = Signal()
     
     def __init__(self, label, klass, button_text=None, button_icon=None,
diff --git a/guidata/disthelpers.py b/guidata/disthelpers.py
index 46b4dcc..c28216c 100644
--- a/guidata/disthelpers.py
+++ b/guidata/disthelpers.py
@@ -30,6 +30,7 @@ import warnings
 
 # Local imports
 from guidata.configtools import get_module_path
+from guidata.py3compat import to_binary_string
 
 
 #==============================================================================
@@ -104,8 +105,9 @@ def _remove_later(fname):
 def get_msvc_version(python_version):
     """Return Microsoft Visual C++ version used to build this Python version"""
     if python_version is None:
-        python_version = '2.7'
-        warnings.warn("assuming Python 2.7 target")
+        python_version = '%s.%s' % (sys.version_info.major,
+                                    sys.version_info.minor)
+        warnings.warn("Assuming Python %s target" % python_version)
     if python_version in ('2.6', '2.7', '3.0', '3.1', '3.2'):
         # Python 2.6-2.7, 3.0-3.2 were built with Visual Studio 9.0.21022.8
         # (i.e. Visual C++ 2008, not Visual C++ 2008 SP1!)
@@ -343,7 +345,7 @@ class Distribution(object):
         self.bin_path_excludes = self.DEFAULT_BIN_PATH_EXCLUDES
         self.msvc = os.name == 'nt'
         self._py2exe_is_loaded = False
-        self._pyqt4_added = False
+        self._pyqt_added = False
         self._pyside_added = False
         # Attributes relative to cx_Freeze:
         self.executables = []
@@ -409,7 +411,7 @@ class Distribution(object):
     def add_text_data_file(self, filename, contents):
         """Create temporary data file *filename* with *contents*
         and add it to *data_files*"""
-        open(filename, 'wb').write(contents)
+        open(filename, 'wb').write(to_binary_string(contents))
         self.data_files += [("", (filename, ))]
         _remove_later(filename)
     
@@ -417,18 +419,25 @@ class Distribution(object):
         self.data_files += [(destdir, (filename, ))]
 
     #------ Adding packages
-    def add_pyqt4(self):
-        """Include module PyQt4 to the distribution"""
-        if self._pyqt4_added:
+    def add_pyqt(self):
+        """Include module PyQt4 or PyQt5 to the distribution"""
+        if self._pyqt_added:
             return
-        self._pyqt4_added = True
+        self._pyqt_added = True
         
-        self.includes += ['sip', 'PyQt4.Qt', 'PyQt4.QtSvg', 'PyQt4.QtNetwork']
+        try:
+            import PyQt4 as PyQt
+            qtver = 4
+        except ImportError:
+            import PyQt5 as PyQt
+            qtver = 5
+        self.includes += ['sip', 'PyQt%d.Qt' % qtver,
+                          'PyQt%d.QtSvg' % qtver,
+                          'PyQt%d.QtNetwork' % qtver]
         
-        import PyQt4
-        pyqt_path = osp.dirname(PyQt4.__file__)
+        pyqt_path = osp.dirname(PyQt.__file__)
         
-        # Configuring PyQt4
+        # Configuring PyQt
         conf = os.linesep.join(["[Paths]", "Prefix = .", "Binaries = ."])
         self.add_text_data_file('qt.conf', conf)
         
@@ -440,15 +449,18 @@ class Distribution(object):
                 shutil.rmtree(pyqt_tmp)
             os.mkdir(pyqt_tmp)
             vc90man_pyqt = osp.join(pyqt_tmp, vc90man)
-            man = open(vc90man, "r").read().replace('<file name="',
-                                        '<file name="Microsoft.VC90.CRT\\')
-            open(vc90man_pyqt, 'w').write(man)
+            if osp.isfile(vc90man):
+                man = open(vc90man, "r").read().replace('<file name="',
+                                            '<file name="Microsoft.VC90.CRT\\')
+                open(vc90man_pyqt, 'w').write(man)
+            else:
+                vc90man_pyqt = None
         for dirpath, _, filenames in os.walk(osp.join(pyqt_path,
                                                       "plugins")):
             filelist = [osp.join(dirpath, f) for f in filenames
                         if osp.splitext(f)[1] in ('.dll', '.py')]
-            if self.msvc and [f for f in filelist
-                           if osp.splitext(f)[1] == '.dll']:
+            if self.msvc and vc90man_pyqt is not None and\
+               [f for f in filelist if osp.splitext(f)[1] == '.dll']:
                 # Where there is a DLL build with Microsoft Visual C++ 2008,
                 # there must be a manifest file as well...
                 # ...congrats to Microsoft for this great simplification!
@@ -522,10 +534,14 @@ class Distribution(object):
     def add_qt_bindings(self):
         """Include Qt bindings, i.e. PyQt4 or PySide"""
         try:
-            imp.find_module('PyQt4')
-            self.add_modules('PyQt4')
+            imp.find_module('PyQt5')
+            self.add_modules('PyQt5')
         except ImportError:
-            self.add_modules('PySide')
+            try:
+                imp.find_module('PyQt4')
+                self.add_modules('PyQt4')
+            except ImportError:
+                self.add_modules('PySide')
 
     def add_matplotlib(self):
         """Include module Matplotlib to the distribution"""
@@ -548,8 +564,8 @@ class Distribution(object):
         """Include module *module_name*"""
         for module_name in module_names:
             print("Configuring module '%s'" % module_name)
-            if module_name == 'PyQt4':
-                self.add_pyqt4()
+            if module_name in ('PyQt4', 'PyQt5'):
+                self.add_pyqt()
             elif module_name == 'PySide':
                 self.add_pyside()
             elif module_name == 'scipy.io':
@@ -595,11 +611,7 @@ class Distribution(object):
             elif module_name == 'guidata':
                 self.add_module_data_files('guidata', ("images", ),
                                        ('.png', '.svg'), copy_to_root=False)
-                try:
-                    imp.find_module('PyQt4')
-                    self.add_pyqt4()
-                except ImportError:
-                    self.add_pyside()
+                self.add_qt_bindings()
             elif module_name == 'guiqwt':
                 self.add_module_data_files('guiqwt', ("images", ),
                                        ('.png', '.svg'), copy_to_root=False)
diff --git a/guidata/images/apply.png b/guidata/images/apply.png
index 2f86f0a..f599260 100644
Binary files a/guidata/images/apply.png and b/guidata/images/apply.png differ
diff --git a/guidata/images/arredit.png b/guidata/images/arredit.png
index 17643e2..d219a96 100644
Binary files a/guidata/images/arredit.png and b/guidata/images/arredit.png differ
diff --git a/guidata/images/busy.png b/guidata/images/busy.png
index d95221b..906a9e1 100644
Binary files a/guidata/images/busy.png and b/guidata/images/busy.png differ
diff --git a/guidata/images/cell_edit.png b/guidata/images/cell_edit.png
index 2de3c2e..a4e8bfc 100644
Binary files a/guidata/images/cell_edit.png and b/guidata/images/cell_edit.png differ
diff --git a/guidata/images/copy.png b/guidata/images/copy.png
index f882aa2..4311a78 100644
Binary files a/guidata/images/copy.png and b/guidata/images/copy.png differ
diff --git a/guidata/images/delete.png b/guidata/images/delete.png
index 2dd36b6..6725f65 100644
Binary files a/guidata/images/delete.png and b/guidata/images/delete.png differ
diff --git a/guidata/images/dictedit.png b/guidata/images/dictedit.png
index bbe7d07..096c23e 100644
Binary files a/guidata/images/dictedit.png and b/guidata/images/dictedit.png differ
diff --git a/guidata/images/edit.png b/guidata/images/edit.png
index 0fef9a9..c324bf6 100644
Binary files a/guidata/images/edit.png and b/guidata/images/edit.png differ
diff --git a/guidata/images/editors/edit.png b/guidata/images/editors/edit.png
index 0fef9a9..c324bf6 100644
Binary files a/guidata/images/editors/edit.png and b/guidata/images/editors/edit.png differ
diff --git a/guidata/images/editors/edit_add.png b/guidata/images/editors/edit_add.png
index 5b051f6..b88ace9 100644
Binary files a/guidata/images/editors/edit_add.png and b/guidata/images/editors/edit_add.png differ
diff --git a/guidata/images/editors/editcopy.png b/guidata/images/editors/editcopy.png
index a332961..dcb5c14 100644
Binary files a/guidata/images/editors/editcopy.png and b/guidata/images/editors/editcopy.png differ
diff --git a/guidata/images/editors/editdelete.png b/guidata/images/editors/editdelete.png
index f182216..713bdd4 100644
Binary files a/guidata/images/editors/editdelete.png and b/guidata/images/editors/editdelete.png differ
diff --git a/guidata/images/editors/editpaste.png b/guidata/images/editors/editpaste.png
index f9156c1..d4d0a0f 100644
Binary files a/guidata/images/editors/editpaste.png and b/guidata/images/editors/editpaste.png differ
diff --git a/guidata/images/editors/fileimport.png b/guidata/images/editors/fileimport.png
index 2cbb971..856fe24 100644
Binary files a/guidata/images/editors/fileimport.png and b/guidata/images/editors/fileimport.png differ
diff --git a/guidata/images/editors/filesave.png b/guidata/images/editors/filesave.png
index 7e32fc7..7f52a46 100644
Binary files a/guidata/images/editors/filesave.png and b/guidata/images/editors/filesave.png differ
diff --git a/guidata/images/editors/imshow.png b/guidata/images/editors/imshow.png
index 60d7f35..85001fd 100644
Binary files a/guidata/images/editors/imshow.png and b/guidata/images/editors/imshow.png differ
diff --git a/guidata/images/editors/insert.png b/guidata/images/editors/insert.png
index a87a07a..3058da3 100644
Binary files a/guidata/images/editors/insert.png and b/guidata/images/editors/insert.png differ
diff --git a/guidata/images/editors/plot.png b/guidata/images/editors/plot.png
index c810141..bda9b3d 100644
Binary files a/guidata/images/editors/plot.png and b/guidata/images/editors/plot.png differ
diff --git a/guidata/images/editors/rename.png b/guidata/images/editors/rename.png
index 2de3c2e..a4e8bfc 100644
Binary files a/guidata/images/editors/rename.png and b/guidata/images/editors/rename.png differ
diff --git a/guidata/images/exit.png b/guidata/images/exit.png
index fb510fb..eb91c9e 100644
Binary files a/guidata/images/exit.png and b/guidata/images/exit.png differ
diff --git a/guidata/images/expander_down.png b/guidata/images/expander_down.png
index c7b2f03..94d1423 100644
Binary files a/guidata/images/expander_down.png and b/guidata/images/expander_down.png differ
diff --git a/guidata/images/expander_right.png b/guidata/images/expander_right.png
index 5930e74..888b791 100644
Binary files a/guidata/images/expander_right.png and b/guidata/images/expander_right.png differ
diff --git a/guidata/images/file.png b/guidata/images/file.png
index 7f8be16..f9449ad 100644
Binary files a/guidata/images/file.png and b/guidata/images/file.png differ
diff --git a/guidata/images/fileclose.png b/guidata/images/fileclose.png
index 95458e0..f7cabdb 100644
Binary files a/guidata/images/fileclose.png and b/guidata/images/fileclose.png differ
diff --git a/guidata/images/fileimport.png b/guidata/images/fileimport.png
index 9850a45..7379bd8 100644
Binary files a/guidata/images/fileimport.png and b/guidata/images/fileimport.png differ
diff --git a/guidata/images/filenew.png b/guidata/images/filenew.png
index 76e81cd..6d8a564 100644
Binary files a/guidata/images/filenew.png and b/guidata/images/filenew.png differ
diff --git a/guidata/images/fileopen.png b/guidata/images/fileopen.png
index 4f046d4..c701cca 100644
Binary files a/guidata/images/fileopen.png and b/guidata/images/fileopen.png differ
diff --git a/guidata/images/filesave.png b/guidata/images/filesave.png
index 7e32fc7..7f52a46 100644
Binary files a/guidata/images/filesave.png and b/guidata/images/filesave.png differ
diff --git a/guidata/images/filesaveas.png b/guidata/images/filesaveas.png
index dfeb87b..1a07336 100644
Binary files a/guidata/images/filesaveas.png and b/guidata/images/filesaveas.png differ
diff --git a/guidata/images/filetypes/doc.png b/guidata/images/filetypes/doc.png
index 311665c..b732196 100644
Binary files a/guidata/images/filetypes/doc.png and b/guidata/images/filetypes/doc.png differ
diff --git a/guidata/images/filetypes/gif.png b/guidata/images/filetypes/gif.png
index af5683c..da5caeb 100644
Binary files a/guidata/images/filetypes/gif.png and b/guidata/images/filetypes/gif.png differ
diff --git a/guidata/images/filetypes/html.png b/guidata/images/filetypes/html.png
index 0f56a71..119b628 100644
Binary files a/guidata/images/filetypes/html.png and b/guidata/images/filetypes/html.png differ
diff --git a/guidata/images/filetypes/jpg.png b/guidata/images/filetypes/jpg.png
index af5683c..da5caeb 100644
Binary files a/guidata/images/filetypes/jpg.png and b/guidata/images/filetypes/jpg.png differ
diff --git a/guidata/images/filetypes/pdf.png b/guidata/images/filetypes/pdf.png
index 7962226..f52be03 100644
Binary files a/guidata/images/filetypes/pdf.png and b/guidata/images/filetypes/pdf.png differ
diff --git a/guidata/images/filetypes/png.png b/guidata/images/filetypes/png.png
index af5683c..da5caeb 100644
Binary files a/guidata/images/filetypes/png.png and b/guidata/images/filetypes/png.png differ
diff --git a/guidata/images/filetypes/pps.png b/guidata/images/filetypes/pps.png
index 762dfbc..31efbe0 100644
Binary files a/guidata/images/filetypes/pps.png and b/guidata/images/filetypes/pps.png differ
diff --git a/guidata/images/filetypes/ps.png b/guidata/images/filetypes/ps.png
index 9203b0d..639fd64 100644
Binary files a/guidata/images/filetypes/ps.png and b/guidata/images/filetypes/ps.png differ
diff --git a/guidata/images/filetypes/tar.png b/guidata/images/filetypes/tar.png
index 5a52ef8..6352941 100644
Binary files a/guidata/images/filetypes/tar.png and b/guidata/images/filetypes/tar.png differ
diff --git a/guidata/images/filetypes/tgz.png b/guidata/images/filetypes/tgz.png
index 5a52ef8..6352941 100644
Binary files a/guidata/images/filetypes/tgz.png and b/guidata/images/filetypes/tgz.png differ
diff --git a/guidata/images/filetypes/tif.png b/guidata/images/filetypes/tif.png
index af5683c..da5caeb 100644
Binary files a/guidata/images/filetypes/tif.png and b/guidata/images/filetypes/tif.png differ
diff --git a/guidata/images/filetypes/txt.png b/guidata/images/filetypes/txt.png
index 2867558..d7a9e44 100644
Binary files a/guidata/images/filetypes/txt.png and b/guidata/images/filetypes/txt.png differ
diff --git a/guidata/images/filetypes/xls.png b/guidata/images/filetypes/xls.png
index 42dc708..9c44bf6 100644
Binary files a/guidata/images/filetypes/xls.png and b/guidata/images/filetypes/xls.png differ
diff --git a/guidata/images/filetypes/zip.png b/guidata/images/filetypes/zip.png
index 5a52ef8..6352941 100644
Binary files a/guidata/images/filetypes/zip.png and b/guidata/images/filetypes/zip.png differ
diff --git a/guidata/images/guidata.svg b/guidata/images/guidata.svg
index 0283701..f8080d8 100644
--- a/guidata/images/guidata.svg
+++ b/guidata/images/guidata.svg
@@ -1,538 +1,538 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="153.56583"
-   height="153.56583"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.48.2 r9819"
-   sodipodi:docname="guidata.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="D:\128.png"
-   inkscape:export-xdpi="28.091852"
-   inkscape:export-ydpi="28.091852">
-  <metadata
-     id="metadata2193">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="744"
-     inkscape:window-width="1280"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="1.8528087"
-     inkscape:cx="-14.031974"
-     inkscape:cy="62.748306"
-     inkscape:window-x="24"
-     inkscape:window-y="91"
-     inkscape:current-layer="svg2"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-maximized="0" />
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient7932"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#a0a0a0;stop-opacity:1;"
-         offset="0"
-         id="stop7934" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6481">
-      <stop
-         id="stop6483"
-         offset="0"
-         style="stop-color:#5a9fd4;stop-opacity:1" />
-      <stop
-         id="stop6485"
-         offset="1"
-         style="stop-color:#306998;stop-opacity:1" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible">
-      <path
-         id="path3908"
-         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6,-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Send"
-       style="overflow:visible">
-      <path
-         id="path3896"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible">
-      <path
-         id="path3890"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend"
-       style="overflow:visible">
-      <path
-         id="path3902"
-         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <linearGradient
-       id="linearGradient3812">
-      <stop
-         style="stop-color:#f0f0f0;stop-opacity:1;"
-         offset="0"
-         id="stop3814" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="1"
-         id="stop3816" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3802"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#808080;stop-opacity:1;"
-         offset="0"
-         id="stop3804" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3350">
-      <stop
-         style="stop-color:#00cb2b;stop-opacity:0.24793388;"
-         offset="0"
-         id="stop3352" />
-      <stop
-         style="stop-color:#00cb2b;stop-opacity:1;"
-         offset="1"
-         id="stop3354" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3342">
-      <stop
-         style="stop-color:#005a85;stop-opacity:1;"
-         offset="0"
-         id="stop3344" />
-      <stop
-         style="stop-color:#005a85;stop-opacity:0.75206614;"
-         offset="1"
-         id="stop3346" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3310">
-      <stop
-         id="stop3312"
-         offset="0"
-         style="stop-color:#ae0202;stop-opacity:1;" />
-      <stop
-         id="stop3314"
-         offset="1"
-         style="stop-color:#b47575;stop-opacity:1;" />
-    </linearGradient>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 71.887497 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="486.04999 : 71.887497 : 1"
-       inkscape:persp3d-origin="243.02499 : 47.924998 : 1"
-       id="perspective47" />
-    <linearGradient
-       id="linearGradient2795">
-      <stop
-         style="stop-color:#b8b8b8;stop-opacity:0.49803922"
-         offset="0"
-         id="stop2797" />
-      <stop
-         style="stop-color:#7f7f7f;stop-opacity:0"
-         offset="1"
-         id="stop2799" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2787">
-      <stop
-         style="stop-color:#7f7f7f;stop-opacity:0.5"
-         offset="0"
-         id="stop2789" />
-      <stop
-         style="stop-color:#7f7f7f;stop-opacity:0"
-         offset="1"
-         id="stop2791" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3676">
-      <stop
-         style="stop-color:#b2b2b2;stop-opacity:0.5"
-         offset="0"
-         id="stop3678" />
-      <stop
-         style="stop-color:#b3b3b3;stop-opacity:0"
-         offset="1"
-         id="stop3680" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3236">
-      <stop
-         style="stop-color:#f4f4f4;stop-opacity:1"
-         offset="0"
-         id="stop3244" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="1"
-         id="stop3240" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4671">
-      <stop
-         style="stop-color:#ffd43b;stop-opacity:1"
-         offset="0"
-         id="stop4673" />
-      <stop
-         style="stop-color:#ffe873;stop-opacity:1"
-         offset="1"
-         id="stop4675" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4689">
-      <stop
-         style="stop-color:#5a9fd4;stop-opacity:1"
-         offset="0"
-         id="stop4691" />
-      <stop
-         style="stop-color:#306998;stop-opacity:1"
-         offset="1"
-         id="stop4693" />
-    </linearGradient>
-    <linearGradient
-       x1="224.23996"
-       y1="144.75717"
-       x2="-65.308502"
-       y2="144.75717"
-       id="linearGradient2987"
-       xlink:href="#linearGradient4671"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(100.2702,99.61116)" />
-    <linearGradient
-       x1="172.94208"
-       y1="77.475983"
-       x2="26.670298"
-       y2="76.313133"
-       id="linearGradient2990"
-       xlink:href="#linearGradient4689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(100.2702,99.61116)" />
-    <linearGradient
-       x1="172.94208"
-       y1="77.475983"
-       x2="26.670298"
-       y2="76.313133"
-       id="linearGradient2587"
-       xlink:href="#linearGradient4689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(100.2702,99.61116)" />
-    <linearGradient
-       x1="224.23996"
-       y1="144.75717"
-       x2="-65.308502"
-       y2="144.75717"
-       id="linearGradient2589"
-       xlink:href="#linearGradient4671"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(100.2702,99.61116)" />
-    <linearGradient
-       x1="172.94208"
-       y1="77.475983"
-       x2="26.670298"
-       y2="76.313133"
-       id="linearGradient2248"
-       xlink:href="#linearGradient4689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(100.2702,99.61116)" />
-    <linearGradient
-       x1="224.23996"
-       y1="144.75717"
-       x2="-65.308502"
-       y2="144.75717"
-       id="linearGradient2250"
-       xlink:href="#linearGradient4671"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(100.2702,99.61116)" />
-    <linearGradient
-       x1="224.23996"
-       y1="144.75717"
-       x2="-65.308502"
-       y2="144.75717"
-       id="linearGradient2255"
-       xlink:href="#linearGradient4671"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)" />
-    <linearGradient
-       x1="172.94208"
-       y1="76.176224"
-       x2="26.670298"
-       y2="76.313133"
-       id="linearGradient2258"
-       xlink:href="#linearGradient4689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)" />
-    <radialGradient
-       cx="61.518883"
-       cy="132.28575"
-       r="29.036913"
-       fx="61.518883"
-       fy="132.28575"
-       id="radialGradient2801"
-       xlink:href="#linearGradient2795"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.177966,0,108.7434)" />
-    <linearGradient
-       x1="150.96111"
-       y1="192.35176"
-       x2="112.03144"
-       y2="137.27299"
-       id="linearGradient1475"
-       xlink:href="#linearGradient4671"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)" />
-    <linearGradient
-       x1="26.648937"
-       y1="20.603781"
-       x2="135.66525"
-       y2="114.39767"
-       id="linearGradient1478"
-       xlink:href="#linearGradient4689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)" />
-    <radialGradient
-       cx="61.518883"
-       cy="132.28575"
-       r="29.036913"
-       fx="61.518883"
-       fy="132.28575"
-       id="radialGradient1480"
-       xlink:href="#linearGradient2795"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.382716e-8,-0.296405,1.43676,4.683673e-7,-128.544,150.5202)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795"
-       id="radialGradient2421"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.7490565e-8,-0.239947,1.054668,3.7915457e-7,-78.109429,148.85906)"
-       cx="61.518883"
-       cy="132.28575"
-       fx="61.518883"
-       fy="132.28575"
-       r="29.036913" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4671-8"
-       id="linearGradient3826-6"
-       x1="36.970898"
-       y1="54.646763"
-       x2="87.704681"
-       y2="54.646763"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       id="linearGradient4671-8">
-      <stop
-         style="stop-color:#ffd43b;stop-opacity:1"
-         offset="0"
-         id="stop4673-8" />
-      <stop
-         style="stop-color:#ffe873;stop-opacity:1"
-         offset="1"
-         id="stop4675-2" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3812"
-       id="linearGradient3818"
-       x1="78.012024"
-       y1="80.302933"
-       x2="124.67964"
-       y2="28.603327"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4671-0"
-       id="linearGradient4097"
-       x1="-205.05431"
-       y1="55.606441"
-       x2="-64.806259"
-       y2="55.606441"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4689-9"
-       id="linearGradient4377"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)"
-       x1="26.648937"
-       y1="20.603781"
-       x2="135.66525"
-       y2="114.39767" />
-    <linearGradient
-       id="linearGradient4689-9">
-      <stop
-         style="stop-color:#5a9fd4;stop-opacity:1"
-         offset="0"
-         id="stop4691-4" />
-      <stop
-         style="stop-color:#306998;stop-opacity:1"
-         offset="1"
-         id="stop4693-6" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4671-0"
-       id="linearGradient4374"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)"
-       x1="150.96111"
-       y1="192.35176"
-       x2="112.03144"
-       y2="137.27299" />
-    <linearGradient
-       id="linearGradient4671-0">
-      <stop
-         style="stop-color:#ffd43b;stop-opacity:1"
-         offset="0"
-         id="stop4673-3" />
-      <stop
-         style="stop-color:#ffe873;stop-opacity:1"
-         offset="1"
-         id="stop4675-6" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795-2"
-       id="radialGradient4370"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.7490565e-8,-0.23994696,1.054668,3.7915457e-7,-78.109429,148.85906)"
-       cx="61.518883"
-       cy="132.28575"
-       fx="61.518883"
-       fy="132.28575"
-       r="29.036913" />
-    <linearGradient
-       id="linearGradient2795-2">
-      <stop
-         style="stop-color:#b8b8b8;stop-opacity:0.49803922"
-         offset="0"
-         id="stop2797-4" />
-      <stop
-         style="stop-color:#7f7f7f;stop-opacity:0"
-         offset="1"
-         id="stop2799-5" />
-    </linearGradient>
-    <radialGradient
-       r="29.036913"
-       fy="132.28575"
-       fx="61.518883"
-       cy="132.28575"
-       cx="61.518883"
-       gradientTransform="matrix(1.7490565e-8,-0.23994696,1.054668,3.7915457e-7,-78.109429,148.85906)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient4416"
-       xlink:href="#linearGradient2795-2"
-       inkscape:collect="always" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2795-2"
-       id="radialGradient4458"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2864026e-8,-0.17647709,0.77569117,2.7886202e-7,-26.468105,126.78403)"
-       cx="61.518883"
-       cy="132.28575"
-       fx="61.518883"
-       fy="132.28575"
-       r="29.036913" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6481"
-       id="linearGradient6479"
-       x1="-158.6674"
-       y1="46.147835"
-       x2="-78.777054"
-       y2="46.147835"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.0600988,0,0,2.0600988,293.35282,15.425527)" />
-  </defs>
-  <path
-     sodipodi:type="arc"
-     style="fill:url(#linearGradient4097);stroke:none;stroke-opacity:1;fill-opacity:1.0"
-     id="path4089"
-     sodipodi:cx="-134.93028"
-     sodipodi:cy="55.606441"
-     sodipodi:rx="69.624023"
-     sodipodi:ry="51.543369"
-     d="m -65.306259,55.606441 a 69.624023,51.543369 0 1 1 -139.248051,0 69.624023,51.543369 0 1 1 139.248051,0 z"
-     transform="translate(211.03096,8.635538)" />
-  <path
-     inkscape:connector-curvature="0"
-     d="m 76.316126,27.404597 c -9.167009,0.04257 -17.921288,0.824402 -25.624146,2.187424 -22.69166,4.00887 -26.811595,12.399787 -26.811595,27.874061 l 0,20.436814 53.623186,0 0,6.812269 -3.339702,33.912115 50.740901,-12.82264 c 4.93564,0.10584 11.42175,-6.328919 6.15952,-48.338558 0,-14.532187 -12.25955,-25.448698 -26.81161,-27.874061 C 95.041031,28.05862 85.483112,27.361995 76.316126,27.404597 z M 47.317113,43.841543 c 5.538896,0 10.062145,4.597138 10.062145,10.249652 0,5.632485 -4.523 [...]
-     style="fill:url(#linearGradient6479);fill-opacity:1;fill-rule:nonzero"
-     id="path1948"
-     sodipodi:nodetypes="scscccccccssssss" />
-  <path
-     style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#db945f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.58500000000000090;marker:none;visibility:visible;display:inline;overfl [...]
-     d="m 77.306851,8.1694723 c -42.510551,0 -77.413721,20.0662467 -77.413721,53.2120357 0,8.286447 2.1477156,16.195516 6.0335163,23.397993 3.8858007,7.202478 9.5096867,13.698363 16.4620267,19.158439 6.952341,5.46008 15.233136,9.88436 24.432756,12.94361 9.199619,3.05926 42.526071,31.19983 53.153709,31.19983 5.313822,0 -21.121472,-14.05573 -18.222782,-20.92935 2.445252,-5.79838 20.364304,-8.74085 24.965674,-10.27048 9.20273,-3.05926 17.48768,-7.48353 24.44418,-12.94361 6.9565,-5.460076 12 [...]
-     id="path3032"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="ssssssssssssssssssss" />
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="153.56583"
+   height="153.56583"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="guidata.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\128.png"
+   inkscape:export-xdpi="28.091852"
+   inkscape:export-ydpi="28.091852">
+  <metadata
+     id="metadata2193">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="744"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1.8528087"
+     inkscape:cx="-14.031974"
+     inkscape:cy="62.748306"
+     inkscape:window-x="24"
+     inkscape:window-y="91"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient7932"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#a0a0a0;stop-opacity:1;"
+         offset="0"
+         id="stop7934" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6481">
+      <stop
+         id="stop6483"
+         offset="0"
+         style="stop-color:#5a9fd4;stop-opacity:1" />
+      <stop
+         id="stop6485"
+         offset="1"
+         style="stop-color:#306998;stop-opacity:1" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         id="path3908"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Send"
+       style="overflow:visible">
+      <path
+         id="path3896"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         id="path3890"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         id="path3902"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <linearGradient
+       id="linearGradient3812">
+      <stop
+         style="stop-color:#f0f0f0;stop-opacity:1;"
+         offset="0"
+         id="stop3814" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3816" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3802"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#808080;stop-opacity:1;"
+         offset="0"
+         id="stop3804" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3350">
+      <stop
+         style="stop-color:#00cb2b;stop-opacity:0.24793388;"
+         offset="0"
+         id="stop3352" />
+      <stop
+         style="stop-color:#00cb2b;stop-opacity:1;"
+         offset="1"
+         id="stop3354" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3342">
+      <stop
+         style="stop-color:#005a85;stop-opacity:1;"
+         offset="0"
+         id="stop3344" />
+      <stop
+         style="stop-color:#005a85;stop-opacity:0.75206614;"
+         offset="1"
+         id="stop3346" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3310">
+      <stop
+         id="stop3312"
+         offset="0"
+         style="stop-color:#ae0202;stop-opacity:1;" />
+      <stop
+         id="stop3314"
+         offset="1"
+         style="stop-color:#b47575;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 71.887497 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="486.04999 : 71.887497 : 1"
+       inkscape:persp3d-origin="243.02499 : 47.924998 : 1"
+       id="perspective47" />
+    <linearGradient
+       id="linearGradient2795">
+      <stop
+         style="stop-color:#b8b8b8;stop-opacity:0.49803922"
+         offset="0"
+         id="stop2797" />
+      <stop
+         style="stop-color:#7f7f7f;stop-opacity:0"
+         offset="1"
+         id="stop2799" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2787">
+      <stop
+         style="stop-color:#7f7f7f;stop-opacity:0.5"
+         offset="0"
+         id="stop2789" />
+      <stop
+         style="stop-color:#7f7f7f;stop-opacity:0"
+         offset="1"
+         id="stop2791" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3676">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:0.5"
+         offset="0"
+         id="stop3678" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:0"
+         offset="1"
+         id="stop3680" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3236">
+      <stop
+         style="stop-color:#f4f4f4;stop-opacity:1"
+         offset="0"
+         id="stop3244" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop3240" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4671">
+      <stop
+         style="stop-color:#ffd43b;stop-opacity:1"
+         offset="0"
+         id="stop4673" />
+      <stop
+         style="stop-color:#ffe873;stop-opacity:1"
+         offset="1"
+         id="stop4675" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4689">
+      <stop
+         style="stop-color:#5a9fd4;stop-opacity:1"
+         offset="0"
+         id="stop4691" />
+      <stop
+         style="stop-color:#306998;stop-opacity:1"
+         offset="1"
+         id="stop4693" />
+    </linearGradient>
+    <linearGradient
+       x1="224.23996"
+       y1="144.75717"
+       x2="-65.308502"
+       y2="144.75717"
+       id="linearGradient2987"
+       xlink:href="#linearGradient4671"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(100.2702,99.61116)" />
+    <linearGradient
+       x1="172.94208"
+       y1="77.475983"
+       x2="26.670298"
+       y2="76.313133"
+       id="linearGradient2990"
+       xlink:href="#linearGradient4689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(100.2702,99.61116)" />
+    <linearGradient
+       x1="172.94208"
+       y1="77.475983"
+       x2="26.670298"
+       y2="76.313133"
+       id="linearGradient2587"
+       xlink:href="#linearGradient4689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(100.2702,99.61116)" />
+    <linearGradient
+       x1="224.23996"
+       y1="144.75717"
+       x2="-65.308502"
+       y2="144.75717"
+       id="linearGradient2589"
+       xlink:href="#linearGradient4671"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(100.2702,99.61116)" />
+    <linearGradient
+       x1="172.94208"
+       y1="77.475983"
+       x2="26.670298"
+       y2="76.313133"
+       id="linearGradient2248"
+       xlink:href="#linearGradient4689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(100.2702,99.61116)" />
+    <linearGradient
+       x1="224.23996"
+       y1="144.75717"
+       x2="-65.308502"
+       y2="144.75717"
+       id="linearGradient2250"
+       xlink:href="#linearGradient4671"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(100.2702,99.61116)" />
+    <linearGradient
+       x1="224.23996"
+       y1="144.75717"
+       x2="-65.308502"
+       y2="144.75717"
+       id="linearGradient2255"
+       xlink:href="#linearGradient4671"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)" />
+    <linearGradient
+       x1="172.94208"
+       y1="76.176224"
+       x2="26.670298"
+       y2="76.313133"
+       id="linearGradient2258"
+       xlink:href="#linearGradient4689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.562541,0,0,0.567972,-11.5974,-7.60954)" />
+    <radialGradient
+       cx="61.518883"
+       cy="132.28575"
+       r="29.036913"
+       fx="61.518883"
+       fy="132.28575"
+       id="radialGradient2801"
+       xlink:href="#linearGradient2795"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.177966,0,108.7434)" />
+    <linearGradient
+       x1="150.96111"
+       y1="192.35176"
+       x2="112.03144"
+       y2="137.27299"
+       id="linearGradient1475"
+       xlink:href="#linearGradient4671"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)" />
+    <linearGradient
+       x1="26.648937"
+       y1="20.603781"
+       x2="135.66525"
+       y2="114.39767"
+       id="linearGradient1478"
+       xlink:href="#linearGradient4689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)" />
+    <radialGradient
+       cx="61.518883"
+       cy="132.28575"
+       r="29.036913"
+       fx="61.518883"
+       fy="132.28575"
+       id="radialGradient1480"
+       xlink:href="#linearGradient2795"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.382716e-8,-0.296405,1.43676,4.683673e-7,-128.544,150.5202)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795"
+       id="radialGradient2421"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7490565e-8,-0.239947,1.054668,3.7915457e-7,-78.109429,148.85906)"
+       cx="61.518883"
+       cy="132.28575"
+       fx="61.518883"
+       fy="132.28575"
+       r="29.036913" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4671-8"
+       id="linearGradient3826-6"
+       x1="36.970898"
+       y1="54.646763"
+       x2="87.704681"
+       y2="54.646763"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient4671-8">
+      <stop
+         style="stop-color:#ffd43b;stop-opacity:1"
+         offset="0"
+         id="stop4673-8" />
+      <stop
+         style="stop-color:#ffe873;stop-opacity:1"
+         offset="1"
+         id="stop4675-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3812"
+       id="linearGradient3818"
+       x1="78.012024"
+       y1="80.302933"
+       x2="124.67964"
+       y2="28.603327"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4671-0"
+       id="linearGradient4097"
+       x1="-205.05431"
+       y1="55.606441"
+       x2="-64.806259"
+       y2="55.606441"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4689-9"
+       id="linearGradient4377"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)"
+       x1="26.648937"
+       y1="20.603781"
+       x2="135.66525"
+       y2="114.39767" />
+    <linearGradient
+       id="linearGradient4689-9">
+      <stop
+         style="stop-color:#5a9fd4;stop-opacity:1"
+         offset="0"
+         id="stop4691-4" />
+      <stop
+         style="stop-color:#306998;stop-opacity:1"
+         offset="1"
+         id="stop4693-6" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4671-0"
+       id="linearGradient4374"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.562541,0,0,0.567972,-9.399749,-5.305317)"
+       x1="150.96111"
+       y1="192.35176"
+       x2="112.03144"
+       y2="137.27299" />
+    <linearGradient
+       id="linearGradient4671-0">
+      <stop
+         style="stop-color:#ffd43b;stop-opacity:1"
+         offset="0"
+         id="stop4673-3" />
+      <stop
+         style="stop-color:#ffe873;stop-opacity:1"
+         offset="1"
+         id="stop4675-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795-2"
+       id="radialGradient4370"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7490565e-8,-0.23994696,1.054668,3.7915457e-7,-78.109429,148.85906)"
+       cx="61.518883"
+       cy="132.28575"
+       fx="61.518883"
+       fy="132.28575"
+       r="29.036913" />
+    <linearGradient
+       id="linearGradient2795-2">
+      <stop
+         style="stop-color:#b8b8b8;stop-opacity:0.49803922"
+         offset="0"
+         id="stop2797-4" />
+      <stop
+         style="stop-color:#7f7f7f;stop-opacity:0"
+         offset="1"
+         id="stop2799-5" />
+    </linearGradient>
+    <radialGradient
+       r="29.036913"
+       fy="132.28575"
+       fx="61.518883"
+       cy="132.28575"
+       cx="61.518883"
+       gradientTransform="matrix(1.7490565e-8,-0.23994696,1.054668,3.7915457e-7,-78.109429,148.85906)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4416"
+       xlink:href="#linearGradient2795-2"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2795-2"
+       id="radialGradient4458"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2864026e-8,-0.17647709,0.77569117,2.7886202e-7,-26.468105,126.78403)"
+       cx="61.518883"
+       cy="132.28575"
+       fx="61.518883"
+       fy="132.28575"
+       r="29.036913" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6481"
+       id="linearGradient6479"
+       x1="-158.6674"
+       y1="46.147835"
+       x2="-78.777054"
+       y2="46.147835"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0600988,0,0,2.0600988,293.35282,15.425527)" />
+  </defs>
+  <path
+     sodipodi:type="arc"
+     style="fill:url(#linearGradient4097);stroke:none;stroke-opacity:1;fill-opacity:1.0"
+     id="path4089"
+     sodipodi:cx="-134.93028"
+     sodipodi:cy="55.606441"
+     sodipodi:rx="69.624023"
+     sodipodi:ry="51.543369"
+     d="m -65.306259,55.606441 a 69.624023,51.543369 0 1 1 -139.248051,0 69.624023,51.543369 0 1 1 139.248051,0 z"
+     transform="translate(211.03096,8.635538)" />
+  <path
+     inkscape:connector-curvature="0"
+     d="m 76.316126,27.404597 c -9.167009,0.04257 -17.921288,0.824402 -25.624146,2.187424 -22.69166,4.00887 -26.811595,12.399787 -26.811595,27.874061 l 0,20.436814 53.623186,0 0,6.812269 -3.339702,33.912115 50.740901,-12.82264 c 4.93564,0.10584 11.42175,-6.328919 6.15952,-48.338558 0,-14.532187 -12.25955,-25.448698 -26.81161,-27.874061 C 95.041031,28.05862 85.483112,27.361995 76.316126,27.404597 z M 47.317113,43.841543 c 5.538896,0 10.062145,4.597138 10.062145,10.249652 0,5.632485 -4.523 [...]
+     style="fill:url(#linearGradient6479);fill-opacity:1;fill-rule:nonzero"
+     id="path1948"
+     sodipodi:nodetypes="scscccccccssssss" />
+  <path
+     style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#db945f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.58500000000000090;marker:none;visibility:visible;display:inline;overfl [...]
+     d="m 77.306851,8.1694723 c -42.510551,0 -77.413721,20.0662467 -77.413721,53.2120357 0,8.286447 2.1477156,16.195516 6.0335163,23.397993 3.8858007,7.202478 9.5096867,13.698363 16.4620267,19.158439 6.952341,5.46008 15.233136,9.88436 24.432756,12.94361 9.199619,3.05926 42.526071,31.19983 53.153709,31.19983 5.313822,0 -21.121472,-14.05573 -18.222782,-20.92935 2.445252,-5.79838 20.364304,-8.74085 24.965674,-10.27048 9.20273,-3.05926 17.48768,-7.48353 24.44418,-12.94361 6.9565,-5.460076 12 [...]
+     id="path3032"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ssssssssssssssssssss" />
+</svg>
diff --git a/guidata/images/max.png b/guidata/images/max.png
index f55fad8..60bf1e3 100644
Binary files a/guidata/images/max.png and b/guidata/images/max.png differ
diff --git a/guidata/images/min.png b/guidata/images/min.png
index 202c449..11ba5f3 100644
Binary files a/guidata/images/min.png and b/guidata/images/min.png differ
diff --git a/guidata/images/none.png b/guidata/images/none.png
index c8be9a9..93c302e 100644
Binary files a/guidata/images/none.png and b/guidata/images/none.png differ
diff --git a/guidata/images/not_found.png b/guidata/images/not_found.png
index 691ddd9..4cece58 100644
Binary files a/guidata/images/not_found.png and b/guidata/images/not_found.png differ
diff --git a/guidata/images/python.png b/guidata/images/python.png
index 4cb0294..c792875 100644
Binary files a/guidata/images/python.png and b/guidata/images/python.png differ
diff --git a/guidata/images/quickview.png b/guidata/images/quickview.png
index cb4448b..75321f3 100644
Binary files a/guidata/images/quickview.png and b/guidata/images/quickview.png differ
diff --git a/guidata/images/save_all.png b/guidata/images/save_all.png
index eaf7d34..14e8a30 100644
Binary files a/guidata/images/save_all.png and b/guidata/images/save_all.png differ
diff --git a/guidata/images/selection.png b/guidata/images/selection.png
index ae46076..b4909e7 100644
Binary files a/guidata/images/selection.png and b/guidata/images/selection.png differ
diff --git a/guidata/images/settings.png b/guidata/images/settings.png
index 85ecfa1..c30eaf1 100644
Binary files a/guidata/images/settings.png and b/guidata/images/settings.png differ
diff --git a/guidata/images/shape.png b/guidata/images/shape.png
index 13d5376..b7ec27a 100644
Binary files a/guidata/images/shape.png and b/guidata/images/shape.png differ
diff --git a/guidata/images/xmax.png b/guidata/images/xmax.png
index 53a4f75..2e4a846 100644
Binary files a/guidata/images/xmax.png and b/guidata/images/xmax.png differ
diff --git a/guidata/images/xmin.png b/guidata/images/xmin.png
index 65a33a1..87deb93 100644
Binary files a/guidata/images/xmin.png and b/guidata/images/xmin.png differ
diff --git a/guidata/qt/QtCore.py b/guidata/qt/QtCore.py
index 652d471..6437d96 100644
--- a/guidata/qt/QtCore.py
+++ b/guidata/qt/QtCore.py
@@ -1,29 +1,29 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2011 Pierre Raybaut
-# Licensed under the terms of the MIT License
-# (copied from Spyder source code [spyderlib.qt])
-
-import os
-
-if os.environ['QT_API'] == 'pyqt5':
-    from PyQt5.QtCore import *                                # analysis:ignore
-    from PyQt5.QtCore import QCoreApplication
-    from PyQt5.QtCore import pyqtSignal as Signal
-    from PyQt5.QtCore import pyqtSlot as Slot
-    from PyQt5.QtCore import pyqtProperty as Property
-    from PyQt5.QtCore import QT_VERSION_STR as __version__
-elif os.environ['QT_API'] == 'pyqt':
-    from PyQt4.QtCore import *                                # analysis:ignore
-    from PyQt4.Qt import QCoreApplication                     # analysis:ignore
-    from PyQt4.Qt import Qt                                   # analysis:ignore
-    from PyQt4.QtCore import pyqtSignal as Signal             # analysis:ignore
-    from PyQt4.QtCore import pyqtSlot as Slot                 # analysis:ignore
-    from PyQt4.QtCore import pyqtProperty as Property         # analysis:ignore
-    from PyQt4.QtCore import QT_VERSION_STR as __version__    # analysis:ignore
-    # Forces new modules written by PyQt4 developers to be PyQt5-compatible
-    del SIGNAL, SLOT
-else:
-    import PySide.QtCore
-    __version__ = PySide.QtCore.__version__                   # analysis:ignore
-    from PySide.QtCore import *                               # analysis:ignore
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2011 Pierre Raybaut
+# Licensed under the terms of the MIT License
+# (copied from Spyder source code [spyderlib.qt])
+
+import os
+
+if os.environ['QT_API'] == 'pyqt5':
+    from PyQt5.QtCore import *                                # analysis:ignore
+    from PyQt5.QtCore import QCoreApplication
+    from PyQt5.QtCore import pyqtSignal as Signal
+    from PyQt5.QtCore import pyqtSlot as Slot
+    from PyQt5.QtCore import pyqtProperty as Property
+    from PyQt5.QtCore import QT_VERSION_STR as __version__
+elif os.environ['QT_API'] == 'pyqt':
+    from PyQt4.QtCore import *                                # analysis:ignore
+    from PyQt4.Qt import QCoreApplication                     # analysis:ignore
+    from PyQt4.Qt import Qt                                   # analysis:ignore
+    from PyQt4.QtCore import pyqtSignal as Signal             # analysis:ignore
+    from PyQt4.QtCore import pyqtSlot as Slot                 # analysis:ignore
+    from PyQt4.QtCore import pyqtProperty as Property         # analysis:ignore
+    from PyQt4.QtCore import QT_VERSION_STR as __version__    # analysis:ignore
+    # Forces new modules written by PyQt4 developers to be PyQt5-compatible
+    del SIGNAL, SLOT
+else:
+    import PySide.QtCore
+    __version__ = PySide.QtCore.__version__                   # analysis:ignore
+    from PySide.QtCore import *                               # analysis:ignore
diff --git a/guidata/qt/QtDesigner.py b/guidata/qt/QtDesigner.py
index 1c53293..7a764c8 100644
--- a/guidata/qt/QtDesigner.py
+++ b/guidata/qt/QtDesigner.py
@@ -1,14 +1,14 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2012 Pierre Raybaut
-# Licensed under the terms of the MIT License
-# (see spyderlib/__init__.py for details)
-
-import os
-
-if os.environ['QT_API'] == 'pyqt5':
-    from PyQt5.QtDesigner import *  # analysis:ignore
-elif os.environ['QT_API'] == 'pyqt':
-    from PyQt4.QtDesigner import *  # analysis:ignore
-else:
-    from PySide.QtDesigner import *  # analysis:ignore
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2012 Pierre Raybaut
+# Licensed under the terms of the MIT License
+# (see spyderlib/__init__.py for details)
+
+import os
+
+if os.environ['QT_API'] == 'pyqt5':
+    from PyQt5.QtDesigner import *  # analysis:ignore
+elif os.environ['QT_API'] == 'pyqt':
+    from PyQt4.QtDesigner import *  # analysis:ignore
+else:
+    from PySide.QtDesigner import *  # analysis:ignore
diff --git a/guidata/qt/QtGui.py b/guidata/qt/QtGui.py
index 2ac4bb5..7e6c18a 100644
--- a/guidata/qt/QtGui.py
+++ b/guidata/qt/QtGui.py
@@ -1,20 +1,20 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2011 Pierre Raybaut
-# Licensed under the terms of the MIT License
-# (copied from Spyder source code [spyderlib.qt])
-
-import os
-
-if os.environ['QT_API'] == 'pyqt5':
-    from PyQt5.QtCore import QSortFilterProxyModel            # analysis:ignore
-    from PyQt5.QtPrintSupport import (QPrinter, QPrintDialog, # analysis:ignore
-                                      QAbstractPrintDialog)
-    from PyQt5.QtPrintSupport import QPrintPreviewDialog      # analysis:ignore
-    from PyQt5.QtGui import *                                 # analysis:ignore
-    from PyQt5.QtWidgets import *                             # analysis:ignore
-elif os.environ['QT_API'] == 'pyqt':
-    from PyQt4.Qt import QKeySequence, QTextCursor            # analysis:ignore
-    from PyQt4.QtGui import *                                 # analysis:ignore
-else:
-    from PySide.QtGui import *                                # analysis:ignore
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2011 Pierre Raybaut
+# Licensed under the terms of the MIT License
+# (copied from Spyder source code [spyderlib.qt])
+
+import os
+
+if os.environ['QT_API'] == 'pyqt5':
+    from PyQt5.QtCore import QSortFilterProxyModel            # analysis:ignore
+    from PyQt5.QtPrintSupport import (QPrinter, QPrintDialog, # analysis:ignore
+                                      QAbstractPrintDialog)
+    from PyQt5.QtPrintSupport import QPrintPreviewDialog      # analysis:ignore
+    from PyQt5.QtGui import *                                 # analysis:ignore
+    from PyQt5.QtWidgets import *                             # analysis:ignore
+elif os.environ['QT_API'] == 'pyqt':
+    from PyQt4.Qt import QKeySequence, QTextCursor            # analysis:ignore
+    from PyQt4.QtGui import *                                 # analysis:ignore
+else:
+    from PySide.QtGui import *                                # analysis:ignore
diff --git a/guidata/qt/QtSvg.py b/guidata/qt/QtSvg.py
index f4443b6..c86efa2 100644
--- a/guidata/qt/QtSvg.py
+++ b/guidata/qt/QtSvg.py
@@ -1,14 +1,14 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2012 Pierre Raybaut
-# Licensed under the terms of the MIT License
-# (see spyderlib/__init__.py for details)
-
-import os
-
-if os.environ['QT_API'] == 'pyqt5':
-    from PyQt5.QtSvg import *                                 # analysis:ignore
-elif os.environ['QT_API'] == 'pyqt':
-    from PyQt4.QtSvg import *                                 # analysis:ignore
-else:
-    from PySide.QtSvg import *                                # analysis:ignore
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2012 Pierre Raybaut
+# Licensed under the terms of the MIT License
+# (see spyderlib/__init__.py for details)
+
+import os
+
+if os.environ['QT_API'] == 'pyqt5':
+    from PyQt5.QtSvg import *                                 # analysis:ignore
+elif os.environ['QT_API'] == 'pyqt':
+    from PyQt4.QtSvg import *                                 # analysis:ignore
+else:
+    from PySide.QtSvg import *                                # analysis:ignore
diff --git a/guidata/qt/QtWebKit.py b/guidata/qt/QtWebKit.py
index 60c6dca..06d90cf 100644
--- a/guidata/qt/QtWebKit.py
+++ b/guidata/qt/QtWebKit.py
@@ -1,16 +1,16 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2011 Pierre Raybaut
-# Licensed under the terms of the MIT License
-# (see spyderlib/__init__.py for details)
-
-import os
-
-if os.environ['QT_API'] == 'pyqt5':
-    from PyQt5.QtWebKitWidgets import QWebPage, QWebView      # analysis:ignore
-    from PyQt5.QtWebKit import QWebSettings                   # analysis:ignore
-elif os.environ['QT_API'] == 'pyqt':
-    from PyQt4.QtWebKit import (QWebPage, QWebView,           # analysis:ignore
-                                QWebSettings)
-else:
-    from PySide.QtWebKit import *                             # analysis:ignore
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2011 Pierre Raybaut
+# Licensed under the terms of the MIT License
+# (see spyderlib/__init__.py for details)
+
+import os
+
+if os.environ['QT_API'] == 'pyqt5':
+    from PyQt5.QtWebKitWidgets import QWebPage, QWebView      # analysis:ignore
+    from PyQt5.QtWebKit import QWebSettings                   # analysis:ignore
+elif os.environ['QT_API'] == 'pyqt':
+    from PyQt4.QtWebKit import (QWebPage, QWebView,           # analysis:ignore
+                                QWebSettings)
+else:
+    from PySide.QtWebKit import *                             # analysis:ignore
diff --git a/guidata/qt/__init__.py b/guidata/qt/__init__.py
index d970de8..95e9f27 100644
--- a/guidata/qt/__init__.py
+++ b/guidata/qt/__init__.py
@@ -1,65 +1,75 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2011-2012 Pierre Raybaut
-#           © 2012-2014 anatoly techtonik
-# Licensed under the terms of the MIT License
-# (see spyderlib/__init__.py for details)
-
-"""Transitional package (PyQt4 --> PySide)"""
-
-import os
-
-os.environ.setdefault('QT_API', 'pyqt')
-assert os.environ['QT_API'] in ('pyqt5', 'pyqt', 'pyside')
-
-API = os.environ['QT_API']
-API_NAME = {'pyqt5': 'PyQt5', 'pyqt': 'PyQt4', 'pyside': 'PySide'}[API]
-
-PYQT5 = False
-
-if API == 'pyqt5':
-    try:
-        from PyQt5.QtCore import PYQT_VERSION_STR as __version__
-        is_old_pyqt = False
-        is_pyqt46 = False
-        PYQT5 = True
-    except ImportError:
-        pass
-    from PyQt5 import uic  # analysis:ignore
-elif API == 'pyqt':
-    # Spyder 2.3 is compatible with both #1 and #2 PyQt API,
-    # but to avoid issues with IPython and other Qt plugins
-    # we choose to support only API #2 for 2.4+
-    import sip
-    try:
-        sip.setapi('QString', 2)
-        sip.setapi('QVariant', 2)
-    except AttributeError:
-        # PyQt < v4.6. The actual check is done by requirements.check_qt()
-        # call from spyder.py
-        pass
-
-    try:
-        from PyQt4.QtCore import PYQT_VERSION_STR as __version__ # analysis:ignore
-    except ImportError:
-        # Switching to PySide
-        API = os.environ['QT_API'] = 'pyside'
-        API_NAME = 'PySide'
-    else:
-        is_old_pyqt = __version__.startswith(('4.4', '4.5', '4.6', '4.7'))
-        is_pyqt46 = __version__.startswith('4.6')
-        import sip
-        try:
-            API_NAME += (" (API v%d)" % sip.getapi('QString'))
-        except AttributeError:
-            pass
-    from PyQt4 import uic  # analysis:ignore
-
-
-if API == 'pyside':
-    try:
-        from PySide import __version__  # analysis:ignore
-    except ImportError:
-        raise ImportError("Spyder requires PySide or PyQt to be installed")
-    else:
-        is_old_pyqt = is_pyqt46 = False
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2011-2012 Pierre Raybaut
+#           © 2012-2014 anatoly techtonik
+# Licensed under the terms of the MIT License
+# (see spyderlib/__init__.py for details)
+
+"""Compatibility package (PyQt4/PyQt5/PySide)"""
+
+import os
+
+os.environ.setdefault('QT_API', 'pyqt')
+assert os.environ['QT_API'] in ('pyqt5', 'pyqt', 'pyside')
+
+API = os.environ['QT_API']
+API_NAME = {'pyqt5': 'PyQt5', 'pyqt': 'PyQt4', 'pyside': 'PySide'}[API]
+
+if API == 'pyqt':
+    # Spyder 2.3 is compatible with both #1 and #2 PyQt API,
+    # but to avoid issues with IPython and other Qt plugins
+    # we choose to support only API #2 for 2.4+
+    import sip
+    try:
+        sip.setapi('QString', 2)
+        sip.setapi('QVariant', 2)
+        sip.setapi('QDate', 2)
+        sip.setapi('QDateTime', 2)
+        sip.setapi('QTextStream', 2)
+        sip.setapi('QTime', 2)
+        sip.setapi('QUrl', 2)        
+    except AttributeError:
+        # PyQt < v4.6. The actual check is done by requirements.check_qt()
+        # call from spyder.py
+        pass
+
+    try:
+        from PyQt4.QtCore import PYQT_VERSION_STR as __version__ # analysis:ignore
+    except ImportError:
+        # Trying PyQt5 before switching to PySide (at this point, PyQt4 may 
+        # not be installed but PyQt5 or Pyside could still be if the QT_API 
+        # environment variable hasn't been set-up)
+        try:
+            import PyQt5  # analysis:ignore
+            API = os.environ['QT_API'] = 'pyqt5'
+            API_NAME = 'PyQt5'
+        except ImportError:
+            API = os.environ['QT_API'] = 'pyside'
+            API_NAME = 'PySide'
+    else:
+        is_old_pyqt = __version__.startswith(('4.4', '4.5', '4.6', '4.7'))
+        is_pyqt46 = __version__.startswith('4.6')
+        import sip
+        try:
+            API_NAME += (" (API v%d)" % sip.getapi('QString'))
+        except AttributeError:
+            pass
+        from PyQt4 import uic  # analysis:ignore
+
+PYQT5 = False
+if API == 'pyqt5':
+    try:
+        from PyQt5.QtCore import PYQT_VERSION_STR as __version__
+        from PyQt5 import uic  # analysis:ignore
+        PYQT5 = True
+        is_old_pyqt = is_pyqt46 = False
+    except ImportError:
+        pass
+    
+if API == 'pyside':
+    try:
+        from PySide import __version__  # analysis:ignore
+    except ImportError:
+        raise ImportError("Spyder requires PySide or PyQt to be installed")
+    else:
+        is_old_pyqt = is_pyqt46 = False
diff --git a/guidata/tests/all_features.py b/guidata/tests/all_features.py
index f8da196..83da6de 100644
--- a/guidata/tests/all_features.py
+++ b/guidata/tests/all_features.py
@@ -68,6 +68,7 @@ class TestParameters(DataSet):
                     help="Threshold current")
     fl2 = FloatItem("Float (col=1)", default=1., min=1, max=1,
                     help="Help on float item").set_pos(col=1)
+    fl3 = FloatItem("Not checked float").set_prop('data', check_value=False)
     bool1 = BoolItem("Boolean option without label")
     bool2 = BoolItem("Boolean option with label", "Label").set_pos(col=1,
                                                                    colspan=2)
diff --git a/guidata/userconfig.py b/guidata/userconfig.py
index ca54dd3..f59a081 100644
--- a/guidata/userconfig.py
+++ b/guidata/userconfig.py
@@ -281,7 +281,8 @@ class UserConfig(cp.ConfigParser):
     def get_default(self, section, option):
         """
         Get Default value for a given (section, option)
-        -> useful for type checking in 'get' method
+
+        Useful for type checking in 'get' method
         """
         section = self.__check_section_option(section, option)
         options = self.defaults.get(section, {})

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/guidata.git



More information about the debian-science-commits mailing list